키-값 튜플 목록을 사전으로 변환하려면 어떻게 해야 합니까?
다음과 같은 목록이 있습니다.
[('A', 1), ('B', 2), ('C', 3)]
 
다음과 같은 사전으로 변환하려고 합니다.
{'A': 1, 'B': 2, 'C': 3}
 
어떻게 하면 좋을까요?
편집: 내 튜플 목록은 실제로 다음과 같습니다.
[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]
 
.ValueError: dictionary update sequence element #0 has length 1916; 2 is required
>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}
오류:
왜 이 제품을 구입해야 하는가?ValueError: dictionary update sequence element #0 has length 1916; 2 is required 삭제:
정답은 목록의 요소가 여러분이 생각하는 것과 다르다는 것입니다.「 」라고 하면,myList[0]첫 예를  투태플이 ('A', 1)수 있는 것입니다.
원래 질문에서 설명한 형식의 목록이 실제로 작성되면,myList = [('A',1),('B',2),...]만.dict(myList).
[오류 편집: 특정 오류에 대한 의도된 질문이 아닌 실제 질문에도 응답합니다.]
일반적으로:
인 '일부러'를 합니다.dict(iterableOrMapping) 컨스트럭터 또는 딕트 리셉션을 사용합니다. {someExpr(k,v) for k:v in iterable}★★★★
>>> example1 = [('A',1), ('B',2), ('C',3)]
>>> dict(example1)
{'A': 1, 'B': 2, 'C': 3}
 
>>> {x:x**2 for x in range(3)}
{0: 0, 1: 1, 2:4}
 
# inline; same as example 1 effectively. may be an iterable, such as
# a sequence, evaluated generator, generator expression
>>> dict( zip(range(2),range(2)) )
{0: 0, 1: 1, 2:2}
 
Python 사전은 O(1) 검색 가능한 쌍의 순서 없는 모음입니다{ )k동그라미→vobject.alue, ...} 입니다.
키는 사전에서 사용할 수 있도록 및 메서드를 구현해야 합니다.이것을 실장하려고 생각하고 있는 경우는, 뭔가 잘못하고 있을 가능성이 있기 때문에, 다른 매핑 데이터 구조를 검토할 필요가 있습니다.(키를 다른 래퍼 구조로 감싸서 통상의 dict를 사용하는 것으로 회피할 수 있는 경우도 있습니다만, 이 방법은 이상적이지 않을 수 있습니다).
'동결' 또는 '불변의' 유형을 구현하려는 중급 또는 고급 프로그래머는 의미에 매우 주의해야 합니다. 그렇지 않으면 프로그램이 매우 미묘하고 찾기 어려운 버그로 인해 잘못될 수 있습니다.
나중에 객체를 변환하여 평등의 개념이 변경될 수 있도록 허용하면 dict를 사용할 수 없습니다.되는 사물은  일일음음음음음음음음음음음음음음음음 objects objects objects objects objects objects objects objects objects objects objects objects objects objects objects objects objects objects objects 가 있어야 합니다.__eq__하여 참을 얻다__hash__동일한 값을 반환합니다.
방법은 규격을 정확히 따라야 합니다.즉, 다음과 같습니다.
- 초보자용:해시함수(wikip.)를 사용하면 false-positive 또는 true-positive 결과를 얻을 수 있습니다.
hash(x)==hash(y)「」를 의미합니다.x= 일일 might might might might might might might mighty후 python 코드는 python을 해야 합니다.x==y).__eq__룩업이 가능하게 됩니다.1에 o o, O(1)))))))))) o o. - 초보자용:매우 중요한 것은,
__hash__오브젝트가 최종 상태가 되면 어떤 이유로도 값은 변경되지 않습니다.와 를 모두 보증할 수 없는 경우는, dict 를 사용하지 말아 주세요. - 데이터 자체를 수정하는 대신 다른 유형의 매핑을 고려할 수 있습니다.이는 라이브러리 사용 비용으로 래퍼 개체를 쓰는 것과 동등할 수 있습니다.이것은 보통 필요하지 않습니다.
 - 전문가용:또한 일부 기본 객체의 해시는 소금에 절여져 있으며 python 호출과 버전 간에 변경될 수 있습니다(python 해시를 포함한 데이터를 저장 또는 네트워크 통신하는 경우 gotcha가 될 수 있습니다.이것들은 각 프로세스 시작 시 재생성되어야 하는 내부 세부 사항입니다).
 
Python은 다음과 같은 다수의 frozen 데이터 구조를 내장하고 있습니다.namedtuple,frozenset등입니다만, 함께 일하기가 더 어려운 경우도 있습니다. tuple기본 냉동 변종입니다.liststructure (이것에 의해, 보존할 수 있습니다){(1, 2): 3, (4, 5): 6})또, 이 모델에는,dict구조.frozen dicts에서 값으로 맵을 가져오려면 frozendict는 서드파티 라이브러리로만 존재하지만 dict를 추출할 수 있습니다..items()무질서하게frozenset의tuples.
이거 먹어봤어?
>>> 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]}
Tuple에 키 반복이 없다면 단순합니다.
tup = [("A",0),("B",3),("C",5)]
dic = dict(tup)
 
태플에 키 반복이 있는 경우.
tup = [("A",0),("B",3),("C",5),("A",9),("B",4)]
dic = {}
for i, j in tup:
    dic.setdefault(i,[]).append(j)
 
또는 다음 중 하나를 선택합니다.
from collections import defaultdict
tup = [("A",0),("B",3),("C",5),("A",9),("B",4)]
dic = defaultdict(list)
for i, j in tup:
    dic[i].append(j)
사전적 이해를 이용하는 또 다른 방법으로는,
>>> t = [('A', 1), ('B', 2), ('C', 3)]
>>> d = { i:j for i,j in t }
>>> d
{'A': 1, 'B': 2, 'C': 3}
l=[['A', 1], ['B', 2], ['C', 3]]
d={}
for i,j in l:
d.setdefault(i,j)
print(d)
언급URL : https://stackoverflow.com/questions/6586310/how-to-convert-list-of-key-value-tuples-into-dictionary
'programing' 카테고리의 다른 글
| 값을 기준으로 개체를 제거할 어레이 확장 (0) | 2023.04.12 | 
|---|---|
| 개체 배열에서 속성 값 배열 가져오기 (0) | 2023.04.12 | 
| 변수 이름이 문자열로 저장되는 경우 변수 값을 얻는 방법은 무엇입니까? (0) | 2023.04.12 | 
| 스크립트의 인수를 사용하여 두 번째 스크립트 호출 (0) | 2023.04.12 | 
| 폴더가 아직 존재하지 않는 경우에만 일괄 처리가 포함된 폴더 만들기 (0) | 2023.04.12 |