내가 같은 사전을 가지고 있다면 :
{ 'a': 1, 'b': 2, 'c': 3 }
이것을 어떻게 변환 할 수 있습니까?
[ ('a', 1), ('b', 2), ('c', 3) ]
어떻게 변환 할 수 있습니까?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
답변
>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> d.items()
[('a', 1), ('c', 3), ('b', 2)]
>>> [(v, k) for k, v in d.iteritems()]
[(1, 'a'), (3, 'c'), (2, 'b')]
원하는 순서가 아니지만 어쨌든 특정 순서는 없습니다. 1 정렬하거나 필요에 따라 구성하십시오.
참조 : items () , iteritems ()
Python 3.x에서는 iteritems
(더 이상 존재하지 않음)를 사용하지 않고 대신을 사용 items
하여 “보기”를 사전 항목에 반환합니다. Python 3.0 의 새로운 기능 문서 및 뷰에 대한 새로운 문서를 참조하십시오 .
1 : dicts에 대한 삽입 순서 보존 이 Python 3.7 에 추가되었습니다.
답변
아무도하지 않았으므로 py3k 버전을 추가합니다.
>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> list(d.items())
[('a', 1), ('c', 3), ('b', 2)]
>>> [(v, k) for k, v in d.items()]
[(1, 'a'), (3, 'c'), (2, 'b')]
답변
목록 이해를 사용할 수 있습니다.
[(k,v) for k,v in a.iteritems()]
당신을 얻을 것이다 [ ('a', 1), ('b', 2), ('c', 3) ]
및
[(v,k) for k,v in a.iteritems()]
다른 예.
원하는 경우 목록 이해에 대해 자세히 알아보십시오. 목록 이해 는 그들과 함께 할 수있는 일입니다.
답변
명명 된 튜플 목록 만들기
namedtuple 을 사용하는 것이 종종 편리 할 수 있습니다 . 예를 들어 다음과 같은 값으로 ‘name’사전을 키로, ‘score’사전을 갖습니다.
d = {'John':5, 'Alex':10, 'Richard': 7}
튜플로 항목을 나열하고 원하는 경우 정렬하고 이름과 점수를 얻을 수 있습니다.
>>> player = best[0]
>>> player.name
'Alex'
>>> player.score
10
이를 수행하는 방법 :
무작위 순서로 또는 컬렉션 순서를 유지합니다 .
import collections
Player = collections.namedtuple('Player', 'name score')
players = list(Player(*item) for item in d.items())
순서대로 값 ( ‘점수’)으로 정렬 :
import collections
Player = collections.namedtuple('Player', 'score name')
가장 낮은 점수로 먼저 정렬 :
worst = sorted(Player(v,k) for (k,v) in d.items())
가장 높은 점수로 먼저 정렬 :
best = sorted([Player(v,k) for (k,v) in d.items()], reverse=True)
답변
원하는 것은 dict
의 items()
및 iteritems()
방법입니다. items
(키, 값) 튜플 목록을 반환합니다. 튜플은 변경할 수 없으므로 되돌릴 수 없습니다. 따라서 반전 된 (값, 키) 튜플을 얻으려면 항목을 반복하고 새 튜플을 만들어야합니다. 반복의 iteritems
경우 전체 목록을 메모리에 유지하지 않고 생성기를 사용하여 (키, 값) 튜플을 생성하므로 바람직합니다.
Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = { 'a': 1, 'b': 2, 'c': 3 }
>>> a.items()
[('a', 1), ('c', 3), ('b', 2)]
>>> [(v,k) for (k,v) in a.iteritems()]
[(1, 'a'), (3, 'c'), (2, 'b')]
>>>
답변
[(k,v) for (k,v) in d.iteritems()]
과
[(v,k) for (k,v) in d.iteritems()]
답변
이것들은 Python 3.x와 Python 2.x의 주요 변경 사항입니다.
Python3.x 사용
dictlist = []
for key, value in dict.items():
temp = [key,value]
dictlist.append(temp)
Python 2.7의 경우
dictlist = []
for key, value in dict.iteritems():
temp = [key,value]
dictlist.append(temp)