美好的一天! 我在比较字典内的列表中的值时遇到了一些麻烦。
{'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)
非常感谢任何帮助或指示。
干杯,
答案 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