2016-12-31 78 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