2017-05-28 20 views
0

次のような辞書があると、ネストされた「最後」キーに関連付けられた値で「namedir」リストをどのようにソートできますか?また、最後の「名前」エントリには「最後の」キーまたは値がないため、キーエラーが見つからないようにする必要があります。 ありがとう!ネストされた値に基づいてソートする方法は?

{ 
    "namedir": [ 
    { 
     "name": { 
     "first": "joe", 
     "last": "jones" 
     } 
    }, 
    { 
     "name": { 
     "first": "bob", 
     "last": "doe" 
     } 
    }, 
    { 
     "name": { 
     "first": "pete", 
     "last": "doe" 
     } 
    }, 
    { 
     "name": { 
     "first": "jane" 
     } 
    } 
    ] 
} 
+0

https://docs.python.org/3.6/library/stdtypes.html?highlight=sort#list.sort、あなた自身を記述する必要がありますキー機能。 – ktb

答えて

1

これを簡単に行うには、カスタムソートキーを使用できます。あなたは姓がないときに何をすべきかのルールを決める必要があります。私は、失われた姓を空の文字列として扱うことを選択しました。これは、それらのエントリが最初に来ることを意味します。

あなたを与える
sorted(namedir, key=lambda x: x['name'].get('last', '')) 

[{'name': {'first': 'jane'}}, 
{'name': {'first': 'bob', 'last': 'doe'}}, 
{'name': {'first': 'pete', 'last': 'doe'}}, 
{'name': {'first': 'joe', 'last': 'jones'}}] 
関連する問題