首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

应用两个for中使用字典

2013-01-06 
使用两个for中使用字典boys[chris,arnold,bob,davice]girls[alice,bernice,clarie,acy]

使用两个for中使用字典


boys=['chris','arnold','bob','davice']
girls=['alice','bernice','clarie','acy']
litergirls={}
g='s'
b='a'
for girl in girls:
    litergirls.setdefault(girl[0],[]).append(girl)
print([(b,g) for b in boys])
print([(b,g) for g in litergirls[b[0]]])
print([(b,g) for b in boys for g in litergirls[b[0]]])



>>> ================================ RESTART ================================
>>> 
[('chris', 's'), ('arnold', 's'), ('bob', 's'), ('davice', 's')]
[('a', 'alice'), ('a', 'acy')]
Traceback (most recent call last):
  File "D:\Program Files\python\556.py", line 48, in <module>
    print([(b,g) for b in boys for g in litergirls[b[0]]])
  File "D:\Program Files\python\556.py", line 48, in <listcomp>
    print([(b,g) for b in boys for g in litergirls[b[0]]])
KeyError: 'd'




print([(b,g) for b in boys for g in litergirls[b[0]]])
是照着书上打的~为什么在这里不能使用多个for的?
[解决办法]
列表生成式是从右往左嵌套的, b是内层, 而你外层却依赖内层, 你说呢。

热点排行