사전에 튜플 목록


112

현재 파이썬에서 튜플 목록을 사전으로 변환하는 방법은 다음과 같습니다.

l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}

더 좋은 방법이 있습니까? 이 작업을 수행하려면 한 줄짜리가 있어야 할 것 같습니다.

답변:


179

dict()튜플 목록을 직접 호출하십시오 .

>>> my_list = [('a', 1), ('b', 2)]
>>> dict(my_list)
{'a': 1, 'b': 2}

1
Derp, 나는 그것을 할 수있는 간단한 방법이있을 것이라는 것을 알고 있었다. 여기 루비에서 와서 일을하는 파이썬 방식을 배우려고 노력하고있다. 감사!
Sarah Vessels

5
이 @chandresh 않는 어떤 업데이트가 필요하지 않습니다, 그래서 파이썬 3 일.
Sven Marnach

@SvenMarnach, 다음은 py 3.5 터미널에서 위에서 작성한 동일한 명령의 출력입니다. Traceback (가장 최근 호출 마지막) : File "<ipython-input-313-7bb3559567ff>", line 1, in <module> dict (my_list) TypeError : 'Dictionary'object is not callable
CKM

4
@chandresh 이것은 Python 3과는 아무 관련이 없습니다.라는 변수가 있기 때문에 dict같은 이름의 Python 내장을 숨 깁니다 . 그렇게해서는 안됩니다.
Sven Marnach

@SvenMarnach 오. 감사. 효과가있었습니다. 사실, 나는 웹에서 코드를 얻어 이것을 실행하려고했습니다. 저자가 dict오류가 발생한 곳에서 변수 이름으로 사용한 것 같습니다 . 다시 한 번 감사드립니다.
CKM

23

dict생성자는 당신이 그것을 (키 / 값 튜플)가 정확하게 입력을 받아들입니다.

>>> l = [('a',1),('b',2)]
>>> d = dict(l)
>>> d
{'a': 1, 'b': 2}

로부터 문서 :

예를 들어 다음은 모두 { "one": 1, "two": 2}와 같은 사전을 반환합니다.

dict(one=1, two=2)
dict({'one': 1, 'two': 2})
dict(zip(('one', 'two'), (1, 2)))
dict([['two', 2], ['one', 1]])


7

여기에있는 모든 사람들은 튜플 목록이 키와 값 사이에 일대일 매핑을한다고 가정하는 것 같습니다 (예 : 사전에 중복 된 키가 없음). 이 주제에 대해 검색하는 첫 번째 질문이므로 중복을 처리해야하는보다 일반적인 경우에 대한 답변을 게시합니다.

mylist = [(a,1),(a,2),(b,3)]    
result = {}
for i in mylist:  
   result.setdefault(i[0],[]).append(i[1])
print(result)
>>> result = {a:[1,2], b:[3]}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.