【问题标题】:dictionary of lists to tuples元组列表字典
【发布时间】:2016-06-12 21:18:54
【问题描述】:

我很确定一定有一种比我使用的更 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() }

有没有更清晰的方法来做到这一点?

【问题讨论】:

  • 我不认为 'to' 与元组有任何关系
  • 是的,谢谢你的贡献。
  • 您当前版本的问题在输入和输出上没有差异。
  • 我改回来了。谢谢
  • @minitoto:当然可以;嵌套字典包含组合成元组的键(字符串)和值(列表)(包含键和值列表的内容)。

标签: python python-2.7 tuples dictionary-comprehension


【解决方案1】:

我只是对嵌套的 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)]}

【讨论】:

  • @Ivan_nn2:现在我已经清楚伦敦隧道了,这是一个可行的答案。
  • 这显然是世界上第四复杂的地铁...... :) 这正是我一直在寻找的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多