2016-12-31 6 views
-4

私は本を読んでいたときにこのプログラムを見つけましたが、理解できません。誰もがこのプログラムを説明してください?

girls = ['alice', 'bernice', 'clarice'] 
boys = ['chris', 'arnold', 'bob'] 
letterGirls = {} 
for girl in girls: 
    letterGirls.setdefault(girl[0], []).append(girl) 
    print [b+'+'+g for b in boys for g in letterGirls[b[0]]] 
+1

から同じ最初の文字と女の子の名前を見つけることによってobatinedされるべきか、具体的には、あなたは分かりませんか? – EJoshuaS

答えて

0
girls = ['alice', 'bernice', 'clarice'] 
boys = ['chris', 'arnold', 'bob'] 

girlsboysは2 lists

`letterGirls = {}` 

letterGirlsある簡単な言葉でこれを説明することができ、キーがdict_varになっていない場合dictionary

setdefault()方法はdict_var[key]=defaultを設定しますです(あなたの場合はdict_varは、フォームの辞書を行いますあなたのコード

letterGirls.setdefault(girl[0], []).append(girl) 

letterGirls

dict_var.setdefault()の使用

dict-var.setdefault(somekey,[]).append(somevalue)

ある

{'c': ['clarice'], 'b': ['bernice'], 'a': ['alice']} 

キーはgirl[0]です。つまり、最初の文字です。

スクリプトにインデントの問題がありました。それ以外の場合は、Key errorが発生します。

それは

girls = ['alice', 'bernice', 'clarice'] 
boys = ['chris', 'arnold', 'bob'] 
letterGirls = {} 
for girl in girls: 
    letterGirls.setdefault(girl[0], []).append(girl) 
print ([b+'+'+g for b in boys for g in letterGirls[b[0]]]) 

あなたの出力

['chris+clarice', 'arnold+alice', 'bob+bernice'] 

男の子のリストの各項目を取り、辞書letterGirls

+0

ありがとう! @jophab – Faruq

+0

@ファルク正しいと印を付けてupvote – jophab

関連する問題