在Python中使用字典理解将字典的元组键解压为单个键

2024-04-27 04:19:40 发布

您现在位置:Python中文网/ 问答频道 /正文

假设字典中的键是元组:

D = {
    ('a','b') : 1,
    ('x','y','z') : 2
}

如何将每个元组键拆分为具有相同值的单独键:

^{pr2}$

在一本字典里理解。我已经起草了下面的一行,但是我想知道是否可以缩短它而不创建一个与密钥元组长度相同的代理值列表。在

N = { k:v for s in ( zip(keys,[value]*len(keys)) for keys,value in D.items() ) for k,v in s }

Tags: in代理列表forlen字典value密钥
2条回答

您要查找的嵌套理解如下所示:

>>> D = {
...:    ('a','b') : 1,
...:    ('x','y','z') : 2
...:}
>>> 
>>> {k_i:v for k, v in D.items() for k_i in k}
>>> {'a': 1, 'b': 1, 'x': 2, 'y': 2, 'z': 2}

{cd1>可以这样写:

^{pr2}$

奖励:itertools虐待!在

>>> from itertools import repeat, chain
>>> dict(chain.from_iterable(zip(k, repeat(v)) for k, v in D.items()))
>>> {'a': 1, 'b': 1, 'x': 2, 'y': 2, 'z': 2}

您可以使用这样的听写理解:

{k: v for t, v in D.items() for k in t}

相关问题 更多 >