r3r*_*son 12 python dictionary list-comprehension python-2.7 dictionary-comprehension
如果我有一个字典,其中包含一个或多个值中的列表:
data = {
'a':0,
'b':1,
'c':[0, 1, 2],
'pair':['one','two']
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到一个dict元组列表,pair
并且迭代结束c
,其他所有元素保持不变?例如
output = [
({
'a':0,
'b':1,
'c':0,
'pair':'one'
},
{
'a':0,
'b':1,
'c':0,
'pair':'two'
}),
({
'a':0,
'b':1,
'c':1,
'pair':'one'
},
...
]
Run Code Online (Sandbox Code Playgroud)
好吧,这感觉不是特别优雅,但你可以使用嵌套的for循环或列表理解:
output = []
for i in data['c']:
output.append(tuple({'a': 0, 'b': 1, 'c': i, 'pair': p} for p in data))
Run Code Online (Sandbox Code Playgroud)
要么
output = [tuple({'a': 0, 'b': 1, 'c': i, 'pair': p} for p in data['pair']) for i in data['c']]
Run Code Online (Sandbox Code Playgroud)
一个更干净的解决方案可能会将组件dict的生成分离为一个函数,如下所示:
def gen_output_dict(c, pair):
return {'a': 0, 'b': 1, 'c': c, 'pair': pair}
output = []
for i in data['c']:
output.append(tuple(gen_output_dict(i, p) for p in data['pair']))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1314 次 |
最近记录: |