列表字典到元组
dictionary of lists to tuples
我很确定一定有比我使用的更 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() }
有没有更清晰的方法来做到这一点?
我只对嵌套的 dict 项使用列表理解和连接:
{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)]}
我很确定一定有比我使用的更 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() }
有没有更清晰的方法来做到这一点?
我只对嵌套的 dict 项使用列表理解和连接:
{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)]}