source

튜플 투 딕셔너리 목록

ittop 2023. 4. 27. 22:43
반응형

튜플 투 딕셔너리 목록

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

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

더 좋은 방법이 있습니까?이를 위해서는 원라이너가 있어야 할 것 같습니다.

튜플 목록을 직접 호출하기만 하면 됩니다.

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

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

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

dict생성자는 사용자가 입력한 대로 입력을 받습니다(키/값 튜플).

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

설명서에서 다음을 참조하십시오.

예를 들어, 이들은 모두 {"하나": 1, "둘": 2}과 동일한 사전을 반환합니다.

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

와 함께dict이해력:

h = {k:v for k,v in l}

@pegah 답변에 대한 기능 결정:

from itertools import groupby

mylist = [('a', 1), ('b', 3), ('a', 2), ('b', 4)]
#mylist = iter([('a', 1), ('b', 3), ('a', 2), ('b', 4)])

result = { k : [*map(lambda v: v[1], values)]
    for k, values in groupby(sorted(mylist, key=lambda x: x[0]), lambda x: x[0])
    }

print(result)
# {'a': [1, 2], 'b': [3, 4]}

언급URL : https://stackoverflow.com/questions/6522446/list-of-tuples-to-dictionary

반응형