나는 사전 튜플 키와 정수 카운트를 구성하고 난 (키 [2]) 그래서파이썬 - 튜플 값에 의해 튜플 - 키 입력 사전 정렬
data = {(a, b, c, d): 1, (b, c, b, a): 4, (a, f, l, s): 3, (c, d, j, a): 7}
print sorted(data.iteritems(), key = lambda x: data.keys()[2])
으로 튜플의 세 번째 값을 정렬 할 이 원하는 출력
>>> {(b, c, b, a): 4, (a, b, c, d): 1, (c, d, j, a): 7, (a, f, l, s): 3}
하지만 내 현재 코드와
는 아무것도 할 것으로 보인다. 어떻게해야합니까?
편집 : 적절한 코드는
sorted(data.iteritems(), key = lambda x: x[0][2])
하지만 맥락에서
from collections import Ordered Dict
data = {('a', 'b', 'c', 'd'): 1, ('b', 'c', 'b', 'a'): 4, ('a', 'f', 'l', 's'): 3, ('c', 'd', 'j', 'a'): 7}
xxx = []
yyy = []
zzz = OrderedDict()
for key, value in sorted(data.iteritems(), key = lambda x: x[0][2]):
x = key[2]
y = key[3]
xxx.append(x)
yyy.append(y)
zzz[x + y] = 1
print xxx
print yyy
print zzz
ZZZ는 정렬되지 않은 것입니다. 사전은 기본적으로 순서가 지정되지 않았고 OrderedDict를 사용하여 정렬해야하기 때문에 사전을 정렬 할 수 있지만 어디에서 사용해야할지 모르겠습니다. 체크 된 응답으로 사용하면 '범위를 벗어난 튜플 인덱스'오류가 발생합니다.
솔루션 :
from collections import OrderedDict
data = {('a', 'b', 'c', 'd'): 1, ('b', 'c', 'b', 'a'): 4, ('a', 'f', 'l', 's'): 3, ('c', 'd', 'j', 'a'): 7}
xxx = []
yyy = []
zzz = OrderedDict()
for key, value in sorted(data.iteritems(), key = lambda x: x[0][2]):
x = key[2]
y = key[3]
xxx.append(x)
yyy.append(y)
zzz[x + y] = 1
print xxx
print yyy
print zzz
사전은 정렬되지 않음 – depperm
iteritems가 호출 될 때 사전을 정렬 할 수 있습니다. –
@JonathanConnell : 그렇다고해서 원하는 출력을 얻을 수있는 것은 아닙니다. –