请解释这个程序?

时间:2016-12-31 20:23:37

标签: python-3.x dictionary append

我在阅读一本书的时候发现了这个程序,我无法理解。任何人都可以用简单的术语解释这个

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 个答案:

答案 0 :(得分:0)

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

girlsboys是两个lists

`letterGirls = {}` 

letterGirlsdictionary

如果密钥不在dict_var中,则

setdefault()方法将设置dict_var[key]=default(在您的情况下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中找到相同的第一个字母的女孩名称来获取