[英]How to check if the first element of each tuple inside a list is a key of a dictionary?
例如,如果有一个字典 student_gpa,其中:
student_gpa = {'Alex': 3.00,
'John': 3.50,
'Jennifer': 3.75}
和一个元组student_age列表,其中:
student_age = [('Mike', 14),
('Alex', 13),
('John', 15)]
如何检查“Mike”、“Alex”和“John”是否都是字典 student_gpa 中的键?
要检查 object 是否是dict
中的键,您可以调用dict.keys()
,它将返回dict
中所有键的list
。
name in dict.keys()
但是,如果您只想检查所有学生是否存在于dict
中,您可以使用all()
和循环来确定是否在keys
列表中找到所有名称。
>>> all(student in student_gpa.keys() for student, age in student_age)
#False
>>> student_gpa['Mike'] = 1.0
>>> all(student in student_gpa.keys() for student, age in student_age)
#True
您可以遍历列表,检查每个元组的第一个元素。 然后检查该值是否是键:
for i in student_age:
if i[0] in student_gpa.keys():
print("yes")`
使用student_gpa.keys()
返回student_gpa
中键的视图 object。 视图 object 是可迭代的。这是一篇很好的文章,解释.keys()
。
或者您可以尝试使用zip
,并尝试使用带有all
的生成器,如下所示:
print(all(i in student_gpa.keys() for i in list(zip(*student_age))[0])
Output:
False
@PacketLoss 的回答也很好:
print(all(x in student_gpa.keys() for x, y in student_age))
Output:
False
这是对我有用的东西
tuple_list = [("a", "b"),("c", "d")]
first_tuple_elements = [a_tuple[0] for a_tuple in tuple_list]#Getting all tupples first element
student_gpa = {'a': 3.00,
'c': 3.50}
for key in first_tuple_elements:
if key in list(student_gpa.keys()):
print(key)
Output:
a
c
检查元组列表的所有第一个元素是否都是字典中的键
print(first_tuple_elements in list(student_gpa.keys()))
Output:
True
检查 dic 的所有键是否都存在于元组列表中,反之亦然
print(list(student_gpa.keys())==first_tuple_elements)
Output:
True
你可以用循环来做到这一点。
student_gpa = {'Alex': 3.00,
'John': 3.50,
'Jennifer': 3.75}
student_age = [('Mike', 14),
('Alex', 13),
('John', 15)]
student_gpa_keys = list(student_gpa.keys())
list_keys = [item[0] for item in student_age]
for ele in list_keys:
if ele in student_gpa_keys:
print(ele)
结果:
Alex
John
我不明白为什么有些答案如此固定使用单行代码。 恕我直言,以下内容简洁易懂,尤其是对于初学者。
for student, age in student_age:
if student in student_gpa: # no need to use student_gpa.keys() to check if a key exists
print(student, 'is in the dictionary')
# Do something
else:
print(student, 'is not in the dictionary')
# Do something else
您可以使用列表推导来做到这一点。
student_gpa = {'Alex': 3.00,
'John': 3.50,
'Jennifer': 3.75}
student_age = [('Mike', 14),
('Alex', 13),
('John', 15)]
students = [std for std, _ in student_age if std in student_gpa]
print (students)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.