守则如下:
spices={
'Animals':{1:'Bison', 2:'Panther', 3:'Elephant'},
'Birds':{1:'Duck', 2:'Hawk', 3:'Pigeon'},
'Fish':{1:'Shark', 2:'Salmon', 3:'Piranha'}
}
result=[spices[specie].values() for specie in spices]
print result清单的结果:
[['Shark', 'Salmon', 'Piranha'], ['Bison', 'Panther', 'Elephant'], ['Duck', 'Hawk', 'Pigeon']]但我的目标是得到一个简单的列表,如:
['Shark', 'Salmon', 'Piranha', 'Bison', 'Panther', 'Elephant', 'Duck', 'Hawk', 'Pigeon'] 如何做到这一点?
发布于 2014-08-28 22:44:59
在列表理解中添加一个循环;嵌套循环从左到右运行:
[v for specie in spices for v in spices[specie].values()]演示:
>>> spices={
... 'Animals':{1:'Bison', 2:'Panther', 3:'Elephant'},
... 'Birds':{1:'Duck', 2:'Hawk', 3:'Pigeon'},
... 'Fish':{1:'Shark', 2:'Salmon', 3:'Piranha'}
... }
>>> [v for specie in spices for v in spices[specie].values()]
['Shark', 'Salmon', 'Piranha', 'Bison', 'Panther', 'Elephant', 'Duck', 'Hawk', 'Pigeon']发布于 2014-08-28 23:18:28
我只想提及另一种方法:
print reduce(lambda x, y: x + y, map(lambda x: x.values(), spices.values()))输出:
['Shark', 'Salmon', 'Piranha', 'Bison', 'Panther', 'Elephant', 'Duck', 'Hawk', 'Pigeon']解释(从右到左):
values。values和自定义lambda函数提取每个嵌套字典的lambda。reduce和另一个自定义lambda函数连接所有值。发布于 2014-08-28 22:47:32
您可以使用itertools.chain
from itertools import chain
spices={
'Animals':{1:'Bison', 2:'Panther', 3:'Elephant'},
'Birds':{1:'Duck', 2:'Hawk', 3:'Pigeon'},
'Fish':{1:'Shark', 2:'Salmon', 3:'Piranha'}
}
print list(chain.from_iterable(spices[specie].values() for specie in spices))
['Shark', 'Salmon', 'Piranha', 'Bison', 'Panther', 'Elephant', 'Duck', 'Hawk', 'Pigeon']https://stackoverflow.com/questions/25559154
复制相似问题