목록이 있습니다 : v = [1,2,2,3]
. 이 목록을 키로 사용하고 싶습니다. 내가 "수동으로"그것을 할 수 있습니다 :파이썬에서 인덱스를 키로 사용하는 방법은 무엇입니까?
x = {}
x[1,2,2,3] = 7
그러나
X [V] =
(7)가 작동하지 않습니다. 내가해야 할 일을하는 가장 쉬운 방법은 무엇입니까?
x[open(v)] = 7
목록이 있습니다 : v = [1,2,2,3]
. 이 목록을 키로 사용하고 싶습니다. 내가 "수동으로"그것을 할 수 있습니다 :파이썬에서 인덱스를 키로 사용하는 방법은 무엇입니까?
x = {}
x[1,2,2,3] = 7
그러나
X [V] =
(7)가 작동하지 않습니다. 내가해야 할 일을하는 가장 쉬운 방법은 무엇입니까?
x[open(v)] = 7
문제는 키가리스트되어 있지 않은, 불변해야한다는 것입니다 :
내가 그런 식으로 해결책을 상상
을 추가했습니다. 그러나 튜플 (Tuples)은 그렇습니다.
x[1,2,2,3] = 7
을 쓰기로 위가 동일,
x[tuple(v)] = 7
이 정교하고 후자는
x[(1,2,2,3)] = 7
이 부분을 좀 더 자세히 설명합니다; 당신이'x [1,2,2,3]'라고 말했을 때리스트로 전혀 색인을 생성하지 않는다면'x .__ getitem __ ([1,2,2,3])'와 같지 않습니다. '[] ''에도 불구하고'x .__ getitem __ ((1,2,2,3))'입니다. – SingleNegationElimination
의 구문 변형 :
간단히 조의 v
변환 Dict keys must be hashable. 목록은 해시 가능하지 않지만 튜플은 있습니다. 객체의 해시 값은 객체의 수명 동안 should never change입니다. 또한 equal을 비교하는 두 개의 해시 가능 객체는 동일한 해시를 가져야합니다. 목록이 변경 가능하기 때문에 두 조건을 모두 충족시키는 유일한 방법은 모든 목록을 동일하게 반환하는 것입니다 . 해시 값 대신이 가능하고 해시의 목적을 전복보다, 파이썬은 모든 변경 가능한 컨테이너 unhashable 만들기)
x[tuple(v)]
x[1,2,2,3]
작품을 튜플이 아닌 괄호, indicated by the use of commas 때문에 :.
In [78]: 1,2,2,3
Out[78]: (1, 2, 2, 3)
파이썬이있다 값 목록을 저장하기위한 두 개의 유사한 데이터 구조. list
은 변경 가능한 버전입니다. 값을 변경할 수 있습니다.
x = [1, 2, 2, 3]
x = list((1, 2, 3, 4))
tuple
은 변경 불가능한 버전입니다. 생성 된 값은 수정할 수 없습니다.
x = 1, 2, 2, 3
x = (1, 2, 2, 3)
x = tuple((1, 2, 2, 3))
파이썬은 그냥 목록에 튜플을 만들 필요가 있도록, 사전 키로 변경 가능한 유형을 사용하지 않는
: 잘
x[tuple(v)] = 7
, 그것은 확실히'열려 있지()'; '[1,2,2,3]'이라는 파일을 읽으 려하고리스트는 문자열이 아니기 때문에 ... – SingleNegationElimination