python元组字典

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

是否有一个很好的方法来获得{'a': 1, 'b': 2} (键和vals交换)?

我希望能够返回给定'a'或2给定'b',也许转换为字典不是最好的方法。

尝试:

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

一个稍微简单的方法:

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

如果你在python 2.7上更简洁:

 >>> t = ((1,'a'),(2,'b')) >>> {y:x for x,y in t} {'a':1, 'b':2} 
 >>> dict([('hi','goodbye')]) {'hi': 'goodbye'} Or: >>> [ 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}] 

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

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

你为什么要困难? 你可以简单地说:

 t = ((1, 'a'),(2, 'b')) tdic = dict(t)