我的人数据集(CSV),并像他们的投票地点:如何将CSV列表标准化为2个或多个单独的文件?
**Person | Voting Place | VP address | ....**
John Doe | Zoo | 123 fake street | ....
Jane Doe | Zoo | 123 fake street | ....
Joey Ramone | Park | 814 Real Street | ...
我想这个正常化的数据,使得位置拉出到一个单独的列表,重复数据删除,并分配一个任意ID #。然后人们将被存储在一个单独的文件中,并参考投票位置ID#而不是实际的信息。
我知道如何使用python集来重复删除列的组合并在他们自己的文件中将它们分解出来。我不明白的是如何在SET()列表中获取/分配每个元素的ID,以便稍后使用它可以返回给它?可这对一个迭代通过CSV做这样伪:
for row in file:
person = [row[0], row[1]]
voting_location = [row[2],row[3]]
if voting_location not in unique_set:
add to set
get ID of element in set
write location line in location file
else: # location already in list so its a duplicate
get id of location already in list
append id to person_list
write person line in person file
有没有办法在纯Python/CSV做到这一点还是我需要启动一个合适的关系型数据库来获取任务完成?
谢谢。我认为你已经用orderedDict解决了一个很好的解决方案。据推测,如果该位置已经在orderedDict中,我可以迭代它以发现它是“行号”。 它发生在我身上,我可以散列位置数据的连接并将散列值存储在人员和位置CSV中。每个独特的组合应该产生相同的散列值。这会起作用吗? – 2015-04-05 01:59:06
每个独特的对*几乎*绝对会产生一个独特的哈希,但哈希碰撞是可能的,需要考虑。字典会在幕后透明地处理这个问题,所以如果你想实现自己的系统愿望散列,你至少应该检查散列冲突(可能保存以前生成的散列列表?)。 – jedwards 2015-04-05 02:03:42