簡體   English   中英

如何檢查列表中每個元組的第一個元素是否是字典的鍵?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM