-1
我的代碼如下所示打開一個csv並將其放入一個字典中,列爲列表。有重複的密鑰,並且不能更改。關鍵是帳號列是行[1]。現在,如果在行[8]中找到'CITY'字符串,則該鍵和值將被刪除。我該如何寫這個,以便同一個鍵(和相應的值)的所有其他實例也將被刪除?Python Dictionary Pop
with open('c:\\file.csv', 'rb') as f:
reader = csv.reader(f)
result = collections.defaultdict(list)
for row in reader:
key = row[1]
result[key].append([row[0], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12]])
if 'CITY' in row[8]:
result.pop(key)
下面是一個輸入例如:
3929, 56794, 5555551212, August, IL, 62305, Steve, Johnson, City, Max, Folder, 22, 56
3929, 56794, 5555551212, August, IL, 62305, Steve, Johnson, None, Max, Folder, 22, 85
3929, 58586, 5555551212, August, IL, 62305, Steve, Johnson, None, Max, Folder, 22, 69
這裏是輸出,我想:
3929, 58586, 5555551212, August, IL, 62305, Steve, Johnson, None, Max, Folder, 22, 69
如此以來,「城市」的第一行中發現,兩者的具有56794帳號的行將被刪除。
有沒有這樣的事情作爲與「重複鍵」字典。如果你不想要包含這個特定的行,那麼爲什麼不早些做'if'測試,如果CITY存在,不要做附加操作? – BrenBarn 2015-01-21 06:41:28
對不起,csv中的每一行都變成了字典。然後,幾個字典中的一些鍵是重複的。如果我先前做了「if」測試,它將只會刪除包含'CITY'字符串的行。我需要擺脫那一行,然後所有其他行都包含相同的帳號。 – Christopher 2015-01-21 06:44:28
您的代碼不會顯示每行成爲字典。它顯示了一個字典,每行的一個元素被用作關鍵字,並且具有該關鍵字的所有條目都會累積到列表中。您的代碼確實會刪除共享該密鑰的所有項目,但如果以後有其他行使用該密鑰,則它們將不會被「刪除」,因爲它們在刪除它們時尚未出現。如果您可以將樣本數據包含在預期的輸出中,這將會很有幫助。 – BrenBarn 2015-01-21 06:48:22