编辑版本:我有一个带有两个列和16000行的CVS文件。我想用其他地址检查每个单元格(地址)以找到唯一的地址,然后将它们放入分开的字典中(其中包含ID和地址作为密钥和值再次)。我的CSV文件是这样的,我猜它是定界线分隔的值(不确定此部分,我该如何检查?)这是一个示例。
ID Address
111 abcd
112 def
122 ghi
113 gkl
132 mno
123 abc
131 lnoghi
134 mko
135 mnoe
136 dfo
我认为我需要将其作为字典制作,然后调用一个键及其值,并将其与其余的唯一,然后将其放入新列表/dic中。如果重复一次以上的相同/相似元素,是否会遇到任何问题?或不?您能帮我吗
谢谢
@roadrunner建议您可以做以下操作:考虑到您已将CSV读为两个列表:
ID = [111,112,122,113,132,123,131]
Names = ['abc','def','ghi','mno','abc','mno']
dictionary = {}
for name in Names:
dictionary[name]= []
for i in range(len(Names)):
dictionary[Names[i]].append(ID[i])
print dictionary
由于它们的多个名称可以是多个名称,并且唯一的ID可以用名称为键,而ID则可以作为值作为值。这是我前一段时间写的示例函数:
from collections import defaultdict
def read_file(filename):
# create the dictionary of lists
data = defaultdict(list)
# read the file
with open(filename) as file:
# skip headers
next(file)
# go over each line
for line in file.readlines():
# split lines on whitespace
items = line.split()
ids, name = int(items[0]), items[1]
# append ids with name
data[name].append(ids)
return data
创建数据字典:
>>> print(dict(read_file("yourdata.txt")))
{'mno': [132, 131], 'ghi': [122], 'def': [112], 'gkl': [113], 'abc': [111, 123]}
然后,您可以简单地查找要比较ID的键(名称)。