2016-12-31 93 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解釋這兩種lists

`letterGirls = {}` 

letterGirlsdictionary

setdefault()方法將設置dict_var[key]=default如果關鍵是尚未在dict_var (在你的情況下,dict_varletterGirls

dict_var.setdefault()的用法

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

在你的代碼

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

將使形式的字典

{'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

@Faruq隨意標記爲正確並給出upvote – jophab