比较字典中的列表项

时间:2018-03-08 13:36:08

标签: python string list dictionary compare

美好的一天! 我在比较字典内的列表中的值时遇到了一些麻烦。

{'lst_4':['New York', 'Amsterdam', 'Berlin'],'lst_5':['New York', 'Brussels', 
Rome'],'lst_6':['Helsinki', 'Stockholm', Milan']}

最终目标是比较每个列表中的第一个项目,如果它们匹配,我想打印它是哪一个。但是由于dict / listception,我无法比较它们。

到目前为止我的代码:

x = 0
dct = {}
for row_cells in sheet.iter_rows(min_row=1, max_row=20):
    x += 1
    dct['lst_%s' %x] = []
    for cell in row_cells:
        if cell.value == None:
            break
        else:
            dct['lst_%s' %x].append(cell.value) 
    print("-------------------------------------------------")
    if not dct['lst_%s' %x]:
        break
    zin = dct['lst_%s' %x][0:]
    print(zin)

非常感谢任何帮助或指示。

干杯,

3 个答案:

答案 0 :(得分:2)

我会使用itertools.combinations

from itertools import combinations

for one, two in combinations(dct, 2):
    if dct[one][0] == dct[two][0]:
        print("Both", one, "and", two, "have", dct[one][0])

答案 1 :(得分:1)

如果您的目标是检测每个列表是否具有相同的第一个元素,请执行以下操作:

(Tools / Internet Options / Security tab / Internet zone / Custom Level button / ActiveX controls and plug-ins section / Initialize and script ActiveX controls not marked as safe for scripting)

在您的示例中,没有输出。

但是如果你想找到2个列表是否具有相同的第一个元素,你可以这样做:

my_dict = {'lst_4':['New York', 'Amsterdam', 'Berlin'],
       'lst_5':['New York', 'Brussels', 'Rome'],
       'lst_6':['Helsinki', 'Stockholm', 'Milan']}

keys = list(my_dict.keys())

if all([my_dict[k][0] == my_dict[keys[0]][0] for k in keys]):
    print(my_dict[keys[0]][0])

在您的情况下,输出为:

my_dict = {'lst_4':['New York', 'Amsterdam', 'Berlin'],
           'lst_5':['New York', 'Brussels', 'Rome'],
           'lst_6':['Helsinki', 'Stockholm', 'Milan']}

keys = list(my_dict.keys())
for i, k1 in enumerate(keys):
    for j, k2 in enumerate(keys[i+1:]):
        if my_dict[k1][0] == my_dict[k2][0]:
            print(my_dict[k1][0])

您遍历列表以查找是否有一些列表具有相同的第一个元素。

答案 2 :(得分:1)

你可以试试这个:

d = {'lst_4':['New York', 'Amsterdam', 'Berlin'],'lst_5':['New York', 'Brussels', 'Rome'],'lst_6':['Helsinki', 'Stockholm', 'Milan']}


def findDuplicateFirstItem(dictionary):
    s = set()
    for value in dictionary.values():
        if value[0] not in s:
            s.add(value[0])
        else:
            print(value[0])

findDuplicateFirstItem(d)

>>>New York