[python] 키-값 튜플 목록을 사전으로 변환하는 방법은 무엇입니까?

다음과 같은 목록이 있습니다.

[('A', 1), ('B', 2), ('C', 3)]

나는 그것을 다음과 같은 사전으로 바꾸고 싶다.

{'A': 1, 'B': 2, 'C': 3}

이것에 대해 가장 좋은 방법은 무엇입니까?

편집 : 내 튜플 목록은 실제로 다음과 같습니다.

[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]



답변

이것은 목록을 분할하고 압축하려는 것과 동일한 오류를 제공합니다. ValueError : 사전 업데이트 시퀀스 요소 # 0의 길이는 1916입니다. 2는 필수입니다.

그것이 당신의 실제 질문입니다.

대답은 목록의 요소가 자신이 생각하는 것과 다르다는 것입니다. 입력 myList[0]하면 목록의 첫 번째 요소가 예를 들어 두 개의 튜플이 ('A', 1)아니라 1916 길이의 이터 러블이라는 것을 알 수 있습니다.

원래 질문 ( ) 에서 언급 한 형식의 목록 이 실제로 있으면 .myList = [('A',1),('B',2),...]dict(myList)


답변

>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}


답변

이거 해봤 어?

>>> l=[('A',1), ('B',2), ('C',3)]
>>> d=dict(l)
>>> d
{'A': 1, 'C': 3, 'B': 2}


답변

중복 된 튜플 “키”를 처리하는 방법은 다음과 같습니다.

# An example
l = [('A', 1), ('B', 2), ('C', 3), ('A', 5), ('D', 0), ('D', 9)]

# A solution
d = dict()
[d [t [0]].append(t [1]) if t [0] in list(d.keys())
 else d.update({t [0]: [t [1]]}) for t in l]
d

OUTPUT: {'A': [1, 5], 'B': [2], 'C': [3], 'D': [0, 9]}


답변

사전 이해를 사용하는 또 다른 방법은

>>> t = [('A', 1), ('B', 2), ('C', 3)]
>>> d = { i:j for i,j in t }
>>> d
{'A': 1, 'B': 2, 'C': 3}


답변

Tuple에 키 반복이 없으면 간단합니다.

tup = [("A",0),("B",3),("C",5)]
dic = dict(tup)
print(dic)

튜플에 키 반복이있는 경우.

tup = [("A",0),("B",3),("C",5),("A",9),("B",4)]
dic = {}
for i, j in tup:
    dic.setdefault(i,[]).append(j)
print(dic)


답변

l=[['A', 1], ['B', 2], ['C', 3]]
d={}
for i,j in l:
d.setdefault(i,j)
print(d)