繁体   English   中英

使用字典的嵌套列表理解

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM