我确信一定有一种比我使用的更Pythonic 的方法来做到这一点。
所以列表字典的字典 ---> 元组列表的字典
说:
ff = {'one': {'aaa': [1, 2, 3], 'bbb': [3, 4, 5]}, 'two': {'ccc': [3, 2, 1]}}
至
test = {'one': [('aaa', 1, 2, 3), ('bbb', 3, 4, 5)], 'two': [('ccc', 3, 2, 1)]}
这是我找到的解决方案:
test = { k:[tuple(itertools.chain(itertools.repeat(ksub,1),(elements for elements in vsub))) for ksub,vsub in v.items()] for k,v in ff.items() }
有没有更清晰的方法来做到这一点?
最佳答案
我只是对嵌套的字典项使用列表理解和串联:
{k: [(nk,) + tuple(nv) for nk, nv in v.iteritems()] for k, v in ff.iteritems()}
演示:
>>> ff = {'one': {'aaa': [1,2,3], 'bbb':[3,4,5] }, 'two': {'ccc' : [3,2,1] }}
>>> {k: [(nk,) + tuple(nv) for nk, nv in v.iteritems()] for k, v in ff.iteritems()}
{'two': [('ccc', 3, 2, 1)], 'one': [('aaa', 1, 2, 3), ('bbb', 3, 4, 5)]}
关于python - 列表到元组的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706260/