2011-09-16 7 views
0
>>> the_values = [u'abc', u'kfc', u'listproperty', u'models', u'new', u'newer', u'note', u'order', u'tag', u'test', u'type'] 
>>> the_keys = [1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1] 
d2 = dict(zip(the_keys, the_values)) 
>>> d2 
{1: u'type', 2: u'tag'} 

"타입"과 "태그"만 사용하는 이유는 무엇입니까?키로 파이썬 사전 정렬하기

the_values에 의해 the_keys을 정렬하려고합니다.

>>> d2 = dict(zip(the_values, the_keys)) 
>>> d2 
{u'abc': 1, u'models': 2, u'note': 1, u'tag': 2, u'kfc': 2, u'newer': 1, u'listproperty': 1, u'test': 1, u'new': 1, u'type': 1, u'order': 1} 

감사 :

나는 the_valuesthe_keys 작품의 순서를 전환하는 것으로 나타났습니다.

+1

[표준] * 사전 *은 순서가 없으며 특정 키를 * 단일 값으로 매핑합니다. (키, 값) 쌍의 정렬 된 * 목록 *을 만들 수 있습니다. –

답변

3

키는 고유해야하므로 1과 2를 유일한 키로 사용하면 두 개의 값만 연결할 수 있습니다.

사전을 만들 때 값에 해당하는 키를 설정하고 있습니다. 먼저, 1 -> abc, 2 -> kfc. 그런 다음 키를 계속 재정의하여 다른 값을 부여합니다. 결국에는 키의 최신 값만 유지됩니다 (1 -> type, 2 -> tag).

2

사전에는 정의에 따라 고유 키가 있기 때문에. (그렇지 않으면 키를 찾을 때 반환 할 값을 어떻게 알 수 있습니까?) dict 생성자는 키 - 값 쌍을 반복하고 해당 값을 사전에있는 해당 키에 할당하여 이미있는 키의 이전 값을 덮어 씁니다 선물.

3

다른 사람들이 말한 것처럼 키는 고유해야합니다. 이 문제를 해결하려면 사전을 사용하지 않아야합니다.

>>> [x[1] for x in sorted(zip(the_keys, the_values), key=operator.itemgetter(0))] 
[u'abc', u'listproperty', u'new', u'newer', u'note', u'order', u'test', u'type', u'kfc', u'models', u'tag']