python 将元组交换为字典

问题描述 投票:0回答:7

对于元组,

t = ((1, 'a'),(2, 'b'))
dict(t)
返回
{1: 'a', 2: 'b'}

有没有一个好的方法来获得

{'a': 1, 'b': 2}
(交换键和值)?

最终,我希望能够返回

1
给定
'a'
2
给定
'b'
,也许转换为字典不是最好的方法。

python dictionary tuples
7个回答
369
投票

尝试:

>>> t = ((1, 'a'),(2, 'b'))
>>> dict((y, x) for x, y in t)
{'a': 1, 'b': 2}

98
投票

稍微简单一点的方法:

>>> t = ((1, 'a'),(2, 'b'))
>>> dict(map(reversed, t))
{'a': 1, 'b': 2}

55
投票

如果您使用的是 python 2.7,则更加简洁:

>>> t = ((1,'a'),(2,'b'))
>>> {y:x for x,y in t}
{'a':1, 'b':2}

17
投票
>>> dict([('hi','goodbye')])
{'hi': 'goodbye'}

或者:

>>> [ dict([i]) for i in (('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14)) ]
[{'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}]

7
投票

如果同一个键有多个值,以下代码会将这些值附加到与其键对应的列表中,

d = dict()
for x,y in t:
    if(d.has_key(y)):
        d[y].append(x)
    else:
        d[y] = [x]

3
投票

这里有几种方法:

>>> t = ((1, 'a'), (2, 'b'))

>>> # using reversed function
>>> dict(reversed(i) for i in t)
{'a': 1, 'b': 2}

>>> # using slice operator
>>> dict(i[::-1] for i in t)
{'a': 1, 'b': 2}

-3
投票

对于Python 3.6及以上版本,它是一个函数:

mydict=myty._asdict()
© www.soinside.com 2019 - 2024. All rights reserved.