2014-11-20 4 views
-2

나는 사전의 목록이 있다면 : I는 알파벳 순서 및 내림차순으로 '수'값의 모든 '이름'값을 인쇄 할 방법사전 목록을 정렬하는 방법?

[{'name':a, 'number':b, 'blah':c, 'swag':d}, 
{'name':a_1,'number':b_1,'blah':c_1,'sw‌​ag':d_1}, 
{'name':a_2,'number':b_2,'blah':c_2,'swag':d_2}] 

를? 그리고 'a'값이 문자열이고 'b'값이 정수라고 가정 해 봅시다. 'name'값은 알파벳 순서로, 'number'값은 내림차순으로 어떻게 인쇄합니까?

+0

이들은 파이썬 사전 {a, b, c, d}가 아닙니다. 사전은 {key : value} 쌍입니다. –

+0

더 나은 U 중첩 된 목록을 사용하여 실제 데이터를 표시 할 수 있습니다 – Hackaholic

+0

그래서 목록의 두 결과가 필요하십니까? 하나는 문자열 인 'a'와 정수를 기반으로 한 'b'를 기반으로합니다. –

답변

1

내장 된 "정렬 된"기능을 사용하여 목록을 정렬 할 수 있습니다. 목록 이해를 사용하여 이름과 번호를 추출 할 수 있습니다. 결합 두 :

>>> dict_list = [{'name':a,'number':b,'blah':c,'swag':d},{'name':a_1,'number':b_1,'blah':c_1,'sw\U+200C​ag':d_1},{'name':a_2,'number':b_2,'blah':c_2,'swag':d_2}] 
>>> sorted_names = sorted([d['name'] for d in dict_list]) 
>>> sorted_names 
['a', 'a_1', 'a_2'] 
>>> sorted_numbers = sorted([d['number'] for d in dict_list], reverse=True) 
>>> sorted_numbers 
[3, 2, 1] 
0

는 상승/알파벳 순서로 '이름'과로 DICT을 정렬하려면 내림차순으로 '숫자'에 의해, (같은 '이름'이 그 DICT에 대한)

내림차순 첫 번째 정렬 '수'

list_of_dict_by_numbers = sorted(original_list_of_dict, key=lambda d: d['number'], reverse=True) 

또는

list_of_dict_by_numbers = sorted(original_list_of_dict, key=lambda d: -d['number']) 

그런 다음 오름차순 종류의 '이름'/ 파이썬 정렬이 안정적이기 때문에 알파벳 순서

result = sorted(list_of_dict_by_numbers, key=lambda d: d['name']) 

이 같은 '이름'이 그 DICT 레코드는 정렬 내림차순 자신의 '수'를 유지합니다.

How to sort in Python

관련 문제