【发布时间】:2017-05-26 23:13:45
【问题描述】:
我有一个这样的列表:
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:数字是整数还是字符串都没有关系(最好是字符串)。
【问题讨论】:
-
输出字符串中的冒号是故意的吗?
-
@chepner,你的意思是关于结果的 [] 吗?是的,我需要它们。我会把结果放在tabulate模块中
-
绝对有可能,但是注意字典是无序的,所以词条的顺序会随意排列。例如
[[x] + y.values() for x, y in mydict.items()]之类的东西 -
@Hamms,如果我输入
[[x] + y.values() for x, y in mydict.items()],请给我错误。"TypeError: can only concatenate list (not "dict_values") to list." -
@Hamms,我发现你的代码升级了:这个
[[x, *y.values()] for x, y in mydict.items()]工作得很好。
标签: python python-3.x dictionary list-comprehension