我的人數據集(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