2016-07-29 3 views
1

저는 파이썬에 초보자이며 파이썬에서 dict of pairs을 만들려고했습니다. 내가 c++에했을 무엇 내가 파이썬에서 동일한 작업을 수행하는 방법을 잘 모르겠습니다파이썬 쌍의 사전

dist[make_pair(a,b)]=1 

입니다

편집 내가 기본적으로하고 싶은 것은 두 정수의 쌍을 매핑하는 것이다 예 -

(1,2) -> 1 
(1,3) -> 2 
(2,1) ->3 

에 대한 몇 가지 부가가치 에 좀 정수 값 쌍을 매핑 할

,
+3

'make_pair'가 무엇을하는지 모르는지 알 수 없기 때문에 확실하지 않습니다. –

+0

매우 명확하지 않은 점에 대해 사과드립니다. 첫 번째 요소가 a로 설정되고 두 번째 요소가 b로 설정된 쌍 객체를 생성합니다. – Noober

+0

예상되는 출력은 무엇입니까? 적절한 대답을 원한다면 [Minimal, Complete, Verifiable example] (http://stackoverflow.com/help/mcve)을 질문에 추가해야합니다. – Kasramvd

답변

4

"tuple"데이터 구조를 사전의 키로 사용할 수 있습니다. n 개의 입력을받는 n-tuple을 반환하는 함수를 정의하려는 경우에도이를 수행 할 수 있습니다. 이 (a, b) 값으로 키로서, 1, 방금 갖는 튜플을 갖는 요소를 생성하기 위해 (a, b), 1

+2

모든 불변 유형은 사전 키의 요구 사항 인 해시 값을 갖습니다. –

+1

식을 만드는 쉼표는 괄호가 아닌 튜플을 생성하므로 괄호를 생략 할 수 있습니다.'dict_example [a, b] = 1'은 잘 작동합니다. – Duncan

+0

@ Noober이 두 가지 주석은 훌륭합니다. 내 대답을 향상 시키십시오. –

2

키 값을 출력

a = 4 
b = 5 

dict_example = dict() 
dict_example[(a,b)] = 1 

print dict_example[(a,b)] 

해야 할 일 :

new_dict = {(a,b) : 1} 

같은 딕셔너리는 이미 존재, 당신은 값으로 키를 1로, 당신이해야 할 B, A 쌍을 추가하려면 :

existing_dict[(a,b)] = 1 

Duncan이 지적한대로 existing_dict[a,b] = 1을 사용할 수도 있습니다. 그 무엇,

>>> d = {} 
>>> pair = [0, 1] 
>>> d[pair] = 'foo' 
TypeError: unhashable type: 'list' 

확인 :

+0

또는 동일한 것에 대해서'existing_dict [a, b] = 1'을 그냥 사용하십시오. – Duncan

1

나는 당신처럼 DICT 키로 배열을 사용하여 시도 것 같아요? 파이썬 dict 키는 변경 가능해서는 안됩니다. 숫자, 문자열 및 기타 해시 가능 유형 일 수 있습니다. 목록, 사전 및 기타 변경 가능한 모음과 같은 변경 가능한 유형은 사용할 수 없습니다.

목록과 매우 비슷하지만 변경할 수없는 모음이 있습니다 : 튜플.

>>> d[tuple(pair)] = 'foo' 
>>> d 
{(1, 2): 'foo'} 

튜플의 문자는 (v1, v2, ..., vN)입니다.

>>> pair = 0, 1 
>>> pair 
(0, 1) 

코드를 리팩토링하는 동안 나는 뒤에 쉼표를 떠날 때 한 번 나는이에 의해 비트보다 더 :

>>> x = 1, # I meant x = 1 
>>> x 
(1,) 

은 즉이다가 모호없는 장소에서, 당신도 괄호를 생략 할 수 있습니다 단 하나의 요소를 가진 튜플의 문자 그대로.