2017-10-30 12 views
1

リストのリストと多くの辞書があります。短いそれを維持するために、私は限られたデータでそれらの2が含まれます:all()を使って辞書の値を比較する複数行のif文

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) 

これは、この例では正常に動作します双子の非常に大きなリストですべての試合を見つけるようには見えなかった。 これは正しい方法ですか?どのように辞書の特定の値を見つけるのが違うのでしょうか?

+0

はなぜ双子に外部ループ? –

+0

私は他のステートメントのためにそれが必要です。例えば。 totalBenefits = totalBenefits + benefits.get(t [1]) – asmsr2

答えて

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']] 
関連する問題