최근에 파이썬으로 프로그래밍을 시작했으며 질문에 답을 얻을 수 없습니다. 나는 여러 가지 키와 값을 가진 방대한 사전 목록을 가지고있다. 목록에 나타나는 사전의 순서를 정렬하고 싶습니다. list_one
:두 가지 기준에 대한 사전 목록 정렬
list_one = [{'country': 'Spain', 'id': 'v1', 'key2': 'value2'},
{'country': 'France', 'id': 'v4', 'key2': 'value2'},
{'country': 'China', 'id': 'v4', 'key2': 'value2'},
{'country': 'Russia', 'id': 'v3', 'key2': 'value2'},
{'country': 'Australia', 'id': 'v2', 'key2': 'value2'},
{'country': 'China', 'id': 'v3', 'key2': 'value2'},
...
]
첫째, 종류에 'ID'값 (v1
, v2
, v3
, ...) (I 잘 해결할 수있다).
또한 id
값이 비슷한 경우 'country'
키의 값에 따라 정렬하십시오. Bu 나는 알파벳 순으로 정렬하고 싶지 않다. 나는이 국가들에 설정된 가치에 기초하여 분류 할 수 있기를 바랍니다. 예를 들어 France = 1
, China = 2
, Australia = 3
, Spain = 4
, Russia = 5
과 같이
사전의 순서는 두 번째 예와 같습니다. list_two
:
[{'country': 'Spain', 'id': 'v1', 'key2': 'value2'},
{'country': 'Australia', 'id': 'v2', 'key2': 'value2'},
{'country': 'China', 'id': 'v3', 'key2': 'value2'},
{'country': 'Russia', 'id': 'v3', 'key2': 'value2'},
{'country': 'France', 'id': 'v4', 'key2': 'value2'},
{'country': 'China', 'id': 'v4', 'key2': 'value2'}
...
]
그 dicts 다음 몇 가지 '암시 적 가치'세트에 먼저 'ID'키의 값에, 목록에 표시 아래와 같이하고, 순서를 정렬 할 수있는 파이썬 방법이 있나요 국가들?
list_two = sorted(
list_one,
key=lambda k: (k['id'], country_ordering.get(k['country'], float('inf')))
:
country_ordering = {'France': 1, 'China': 2, 'Australia': 3,
'Spain': 4, 'Russia': 5}
는 다음 id
그 매핑의 값으로 튜플을 반환하여 정렬 키에 그것을 사용
list_two = sorted(list_one, key=lambda k: k['id'])
덕분에, 그 위대한 작품! 하나의 추가 질문. 'ids'에 대한 주문이 이미 올바르게 수행 된 경우 동일한 '국가'로만 해당 딕테이션을 다시 주문하고 싶습니다. – PDavis
@PDavis : 전체 키로 정렬해야합니다. 파이썬이 사용하는 정렬 알고리즘 ([* Timsort *] (https://en.wikipedia.org/wiki/Timsort))은 이미 정렬 된 서브 섹션을 이용한다. –
나는 같은 'ids'를 가진 그 딕트들을 의미했다. – PDavis