python - 列表到元组的字典

标签 python python-2.7 tuples dictionary-comprehension

我确信一定有一种比我使用的更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/

相关文章:

python - 检查数字是否在 python 中的某个范围内(带循环)?

python - 字符串中第二个重复字符的索引

python - 如何追加序列中的第 n 个?

python - 在 Python 中,即使使用 rawstring 或 unicode 设置, '\' 也会转换为 '\\'

python - 如何在不同的进程python中增加计数器?

python - 使用 for 循环创建元组。

python - 将列表中元组形式的单行字符串拆分为多行(等于元组数)

python - 将 Ipython 魔术输出管道传输到变量?

python3编码二进制时的问题

python - 如何在字典值中的元组中搜索数字?