>source

문제가 있습니다. 나는 가지고있다딕셔너리. 여기에는 약어가 포함되어 있습니다. 이 dict는 다음에 따라 정렬되어야 합니다.짧은 형식. 먼저 모든 짧은 형식A, B, ..., Z. 나는 그것을 시도했다정렬, 그러나 이것은 원하는 대로 작동하지 않습니다. 이제 내 질문은 원하는 출력을 얻을 수 있도록 내 사전을 문자로 정렬하는 방법입니다(아래 참조)?

code

final_output= {
    "abbreviation_knmi": {
        "symbol": "knmi",
        "shortform": "KNMI",
        "longform": "Koninklijk Nederlands Meteorologisch Instituut"
    },
    "abbreviation_fbi": {
        "symbol": "fbi",
        "shortform": "FBI",
        "longform": "Federal Bureau of Investigation"
    },
    "abbreviation_eg": {
        "symbol": "eg",
        "shortform": "e.g.",
        "longform": "For example"
    }
}
sorted_list= sorted(final_output.keys(), key=lambda x: (final_output[x]['shortform']))
print(sorted_list)
[OUT] ['abbreviation_knmi', 'abbreviation_fbi', 'abbreviation_eg']

원하는 출력 사전

{
    "abbreviation_eg": {
        "symbol": "eg",
        "shortform": "e.g.",
        "longform": "For example"
    }
    "abbreviation_fbi": {
        "symbol": "fbi",
        "shortform": "FBI",
        "longform": "Federal Bureau of Investigation"
    },
    "abbreviation_knmi": {
        "symbol": "knmi",
        "shortform": "KNMI",
        "longform": "Koninklijk Nederlands Meteorologisch Instituut"
    },
}

dict(sorted(final_output.items(), key=lambda x: x[1]['shortform']))

Olvin Roght2022-02-14 13:20:03

@OlvinRoght 귀하의 의견에 감사드립니다. 이것은 정렬되지 않은 내 목록만 반환합니다. 정렬이 완료되지 않았습니다.

Test2022-02-14 13:21:56

글쎄, 그렇지는 않지만 대소 문자를 구분하지 않는 정렬을 원하므로 람다 x: x[1]['shortform'].lower()

Olvin Roght2022-02-14 13:23:52

참고 사항 -작업하는 중첩 구조, 특히 키를 생성하는 방식을 생성할 때의 이점을 실제로 보지 못합니다.

buran2022-02-14 13:32:03
  • 이전 UWP/C#에서 SQLite 데이터베이스를 열 때 충돌/오류
  • 다음 javascript : for 루프 내부의 반응 업데이트 상태