답변:
시험:
>>> t = ((1, 'a'),(2, 'b'))
>>> dict((y, x) for x, y in t)
{'a': 1, 'b': 2}
dict((x, y) for x, y, z in t)
또는 dict((x, (y, z)) for x, y, z in t)
튜플로 두 번째와 세 번째 값을 얻을 수 있습니다.
약간 간단한 방법 :
>>> t = ((1, 'a'),(2, 'b'))
>>> dict(map(reversed, t))
{'a': 1, 'b': 2}
reverse
명시 적으로 철자를 쓰는 것이 좋습니다.
map
매핑되는 것이 다른 내장 함수 (예 :와 같은 reversed
) 일 때 이해력보다 빠르다는 것을 제안합니다 . 대부분의 다른 경우에는 그 반대입니다. 그러나 추측하는 것보다 프로파일 링하는 것이 좋습니다 :)
파이썬 2.7을 사용하는 경우 훨씬 간결합니다.
>>> t = ((1,'a'),(2,'b'))
>>> {y:x for x,y in t}
{'a':1, 'b':2}
>>> 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}]
dict(zip(*zip(*t)[::-1]))
. 이것은 느리고 추악하며 더 많은 메모리를 사용합니다. 아마 3 배.