美好的一天! 我在比较字典中的列表内的值时遇到一些问题。
{'lst_4':['New York', 'Amsterdam', 'Berlin'],'lst_5':['New York', 'Brussels',
Rome'],'lst_6':['Helsinki', 'Stockholm', Milan']}
最终目标是比较每个列表中的第一项,如果它们匹配,我想打印它是哪一项。但是,由于字典/列表,我无法比较它们。
到目前为止我的代码:
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)
任何帮助或指示都非常感谢。
干杯
如果您的目标是检测每个列表是否具有相同的第一个元素,只需执行以下操作:
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])
在您的示例中,不会有输出。
但是,如果您想查找 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())
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])
在您的情况下,输出为:
"New York"
循环访问列表以查找几个列表是否具有相同的第一个元素。
我会为此使用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])
你可以试试这个:
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