【问题标题】:Please explain this program?请解释一下这个程序?
【发布时间】:2017-05-15 15:42:31
【问题描述】:

我在看书时发现了这个程序,但我无法理解。谁能简单的解释一下这个

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]]]

【问题讨论】:

  • 具体什么,你不明白吗?

标签: python-3.x dictionary append


【解决方案1】:
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']}

key是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 中找到具有相同首字母的女孩名字来获得

【讨论】:

  • @Faruq 随意标记为正确并投赞成票
猜你喜欢
  • 2014-03-24
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多