[英]Nestled List Comprehension using Dictionaries
我有一个这样的清单:
mydict = {
'Alpha' : {'l':'a','n':1,'q':3,'z':4},
'Beta' : {'l':'b','n':2,'q':2,'z':5},
'Gamma' : {'l':'c','n':3,'q':1,'z':6}
}
# Or
mydict = {'Alpha': {'l': 'a', 'n': 1, 'q':3, 'z':4}, 'Beta': {'l': 'b', 'n': 2, 'q':2, 'z':5}, 'Gamma': {'l': 'c', 'n': 3, 'q':1, 'z':6}}
我的输出需要是:
[['Alpha:','a',1,3,4],['Beta:','b',2,2,5],['Gamma:',c,3,1,6]]
# Or
[
['Alpha:' ,'a' ,1 ,3 ,4],
['Beta:' ,'b' ,2 ,2 ,5],
['Gamma:' ,'c' ,3 ,1 ,6]
]
我的目标是:
[[x,y['l'],y['n'],y['q'],y['z']] for x,y in mydict.items()]
但是我不想使用y['l'],y['n']
,我想使用其他字典理解。 这有可能吗?例如,如果我将键'l'
修改为'a'
该代码将不起作用,并且如果添加新键'x'
,则不会显示该代码。
PD:数字是整数还是字符串(首选字符串)都没有关系。
您可以尝试以下方法:
mydict = {'Alpha': {'l': 'a', 'n': 1, 'q':3, 'z':4}, 'Beta': {'l': 'b', 'n': 2, 'q':2, 'z':5}, 'Gamma': {'l': 'c', 'n': 3, 'q':1, 'z':6}}
new_list = [[i]+b.values() for i, b in mydict.items()]
在评论中使用Hamms的想法,我找到了一个解决方案:
[[x+':', *y.values()] for x, y in mydict.items()]
这给出正确的输出。
您可以遍历字典的每个级别,并将值作为字符串附加到嵌套列表中。
outLst = []
for oKey in mydict.keys():
outLst.append([oKey+':'])
for iKey in mydict[oKey]:
outLst[-1].append(str(mydict[oKey][iKey]))
print outLst
输出为:
[['Alpha:', '3', '4', 'a', '1'], ['Beta:', '2', '5', 'b', '2'], ['Gamma:', '1', '6', 'c', '3']]
如果您希望对输出列表进行排序,则可以修改代码来实现。
[ [ key+':', *value.values()] for key,value in mydict.items()]
[['Alpha:', 'a', 1, 3, 4], ['Beta:', 'b', 2, 2, 5], ['Gamma:', 'c', 3, 1, 6]]
[[x] + y.values() for x, y in mydict.items()]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.