将一个字典的每个元素与它的其他元素进行比较 - 找到相似的元素



编辑版本:我有一个带有两个列和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的键(名称)。

相关内容

  • 没有找到相关文章

最新更新