多行if语句使用all()来比较字典中的值

时间:2017-10-30 20:19:52

标签: python dictionary

我有列表和许多词典。为了简短起见,我将仅包含其中两个数据:

twins = [['John','Mark'],['David', 'Mike']]
gender = {'John': 'male','Mark': 'male','David': 'male','Mike':'male'}
age = {'John': 2,'Mark': 2,'David': 2,'Mike':2}

我使用以下代码查找具有相同性别和年龄的双胞胎:

for t in twins:
    if all(gender.get(t[0])==gender.get(t[1]) for t in twins)
        and all(age.get(t[0])==age.get(t[1]) for t in twins):
        print(t)

这个例子在这个例子中工作得很好,但似乎没有在一个非常大的双胞胎列表中找到所有匹配。 这是正确的方法吗?怎样才能在字典中找到具体的值呢?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

twins = [['John','Mark'],['David', 'Joanna']]
gender = {'John': 'male','Mark': 'male','David': 'male','Mike':'male', 'Joanna':"female"}
age = {'John': 2,'Mark': 2,'David': 2,'Joanna':2}
final_twins = [[name1, name2] for name1, name2 in twins if gender[name1] == gender[name2] and age[name1] == age[name2]]

输出:

[['John', 'Mark']]