字典的python元组

时间:2010-09-24 01:04:04

标签: python dictionary tuples

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

有没有一种方法可以获得{'a': 1, 'b': 2}(交换密钥和值)?

最终,我希望能够返回1给定'a'2给定'b',或许转换为dict不是最佳方式。

6 个答案:

答案 0 :(得分:245)

尝试:

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

答案 1 :(得分:66)

一种稍微简单的方法:

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

答案 2 :(得分:38)

如果你使用的是python 2.7,那就更简洁了:

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

答案 3 :(得分:6)

>>> 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}]

答案 4 :(得分:2)

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

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

答案 5 :(得分:0)

以下是几种方法:

>>> 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}