2016-12-08 4 views
4

並べ替えたいラベルが欠けている可能性のある辞書のリストを並べ替えるにはどうすればいいですか?辞書のPythonソートリスト、一部のラベルが見つからない場合があります

具体的には、このリストはMPDからのものであり、以下のようになります...

[{'title':'Bad','album': 'XSCAPE','genre':'Pop'}, {'title': 'Down to', 'album': 'Money'}] 

私は、ジャンルでソートしたいと思いますが、2番目の項目で辞書がそのための鍵を持っていません注意してください。

これを行うにはPythonの方法がありますか、自分のソートアルゴリズムを構築する必要がありますか? (''は、他のすべての文字列の前にソートされているため)

output = sorted(input, key=lambda album: album['genre'] if 'genre' in album else '') 

これは、最初のリストにジャンルレスアルバムを置く:

+0

あなたは、彼らが本来の順序に欠けるとして辞書をソートすることができないので、明確にする必要があるとしています。辞書項目のキー、値ペアを並べ替えることを意味しますか? –

+0

'genre'キーのない辞書は' genre'キーの辞書の前後にあるべきですか? – rassar

+0

juanpa:辞書をソートしたくない(辞書がソートできないと分かっている)辞書の親リストをソートしたい。この例は2つの項目を持つリストを持っています(私のリストは5000項目以上あります)。各項目は辞書です。 rassar:希望するキー(ジャンル)のない辞書は、キーを持つ辞書の後ろにあるはずです。 –

答えて

2

あなたがsortedを使用して、キーの機能を指定することができます。

+0

"else" zzzzz '"を使うことができます。これは、存在しないジャンルを他のものの後ろに置くべきです。 –

9

使用sorted機能と.get方法:

l = [{'title':'Bad','album': 'XSCAPE','genre':'Pop'}, {'title': 'Down to', 'album': 'Money'}] 
sorted_l = sorted(l, key=lambda x: x.get("genre", "")) 
+1

これは、私が探していたPythonの**方法です。ありがとう。 –

関連する問題