我有一个这样的清单:
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:数字是整数还是字符串(首选字符串)并不重要。
答案 0 :(得分:2)
你可以试试这个:
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()]
答案 1 :(得分:2)
在评论中使用Hamms的想法我找到了一个解决方案:
[[x+':', *y.values()] for x, y in mydict.items()]
这给出了正确的输出。
答案 2 :(得分:1)
您可以循环遍历字典的每个级别,并将值作为字符串附加到嵌套列表。
ng-disabled
输出为:
outLst = []
for oKey in mydict.keys():
outLst.append([oKey+':'])
for iKey in mydict[oKey]:
outLst[-1].append(str(mydict[oKey][iKey]))
print outLst
如果要对输出列表进行排序,我可以修改代码来执行此操作。
答案 3 :(得分:1)
[ [ key+':', *value.values()] for key,value in mydict.items()]
[['Alpha:', 'a', 1, 3, 4], ['Beta:', 'b', 2, 2, 5], ['Gamma:', 'c', 3, 1, 6]]
答案 4 :(得分:0)
[[x] + y.values() for x, y in mydict.items()]