[英]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.