Python 如何循环字典中的值以查看它们是否曾经显示为键
我有以下词典(即,Python 如何循环字典中的值以查看它们是否曾经显示为键,python,python-3.x,Python,Python 3.x,我有以下词典(即,my_dict)。基本上,每个键都是一个病人,该键的值是他们接触过的人。我需要的人只出现在价值观中,而不出现在关键点上Philip和Sarai是唯一显示为值而非键的名称 这是我迄今为止尝试过的代码。如何更改它以有效地循环遍历这些值以确定它们是否曾经显示为键 my_dict = {'Bob': ['Paul', 'Mark', 'Carol', 'Leanne', 'Will'], 'Carol': ['Mark', 'Leanne'],
my_dict
)。基本上,每个键
都是一个病人,该键的值
是他们接触过的人。我需要的人只出现在价值观中,而不出现在关键点上Philip和Sarai是唯一显示为值而非键的名称
这是我迄今为止尝试过的代码。如何更改它以有效地循环遍历这些值以确定它们是否曾经显示为键
my_dict = {'Bob': ['Paul', 'Mark', 'Carol', 'Leanne', 'Will'],
'Carol': ['Mark', 'Leanne'],
'Farley': ['Paul'],
'Leanne': ['Sarai'],
'Larry': ['Carol', 'Mark', 'Leanne', 'Will'],
'Mark': ['Philip', 'Zach'],
'Paul': ['Zach'],
'Will': ['Leanne', 'Mark'],
'Zach': ['Philip']}
list = []
for key in my_dict:
variable = True
for value in my_dict.values():
if key in value:
variable = False
if variable == True:
list.append(value)
print(list)
您可以以一种相当直截了当、易读且高效的方式做您想做的事情,如下所示。我只设置了
值
aset
,以防止您在评论中要求的重复
my_dict = {'Bob': ['Paul', 'Mark', 'Carol', 'Leanne', 'Will'],
'Carol': ['Mark', 'Leanne'],
'Farley': ['Paul'],
'Leanne': ['Sarai'],
'Larry': ['Carol', 'Mark', 'Leanne', 'Will'],
'Mark': ['Philip', 'Zach'],
'Paul': ['Zach'],
'Will': ['Leanne', 'Mark'],
'Zach': ['Philip']}
only_values = {person for people in my_dict.values()
for person in people
if person not in my_dict}
print(only_values) # -> {'Philip', 'Sarai'}
之前已经有一些好帖子可以回答这个问题了。在这里,我只是一步一步地介绍了如何解决这个问题:
patients = my_dict # more descriptive variable
vals = list(patients.values())
uniq_patients = set(sum(vals, []))
print(uniq_patients)
for person in uniq_patients:
if person not in patients: print(person)
Output:
{'Carol', 'Leanne', 'Paul', 'Philip', 'Zach', 'Sarai', 'Will', 'Mark'}
Philip
Sarai