1

次のようなPythonリストがあります。

demo= {'age': 90, 'id': '12#2'}
{'age': 12, 'id': '12#3'}
{'age': 67, 'id': '12#1'}
{'age': 56, 'id': '12#2'}
{'age': 34, 'id': '12#2'}

このリストを id 属性でソートするにはどうすればよいですか?

私が試してみました

sorted(demo, key=lambda x: x.id)   # sort by id

しかし、それは失敗しました。

予想される出力は次のとおりです。

{'age': 90, 'id': '12#2'}
{'age': 56, 'id': '12#2'}
{'age': 34, 'id': '12#2'}
{'age': 12, 'id': '12#3'}
{'age': 67, 'id': '12#1'}
4

4 に答える 4

1
demo= [{'age': 90, 'id': '12#2'},
{'age': 12, 'id': '12#3'},
{'age': 67, 'id': '12#1'},
{'age': 56, 'id': '12#2'},
{'age': 34, 'id': '12#2'}]

a = sorted(demo, key=lambda x: x['id'])

for el in a:
    print el

与える

{'age': 67, 'id': '12#1'}
{'age': 90, 'id': '12#2'}
{'age': 56, 'id': '12#2'}
{'age': 34, 'id': '12#2'}
{'age': 12, 'id': '12#3'}

IDでソートされています。

複数の属性による並べ替え

demo= [{'age': 90, 'id': '12#2'},
{'age': 12, 'id': '12#3'},
{'age': 67, 'id': '12#1'},
{'age': 56, 'id': '12#2'},
{'age': 34, 'id': '12#2'}]

a = sorted(demo, key=lambda x: (x['id'], x['age']))

for el in a:
    print el

与える

{'age': 67, 'id': '12#1'}
{'age': 34, 'id': '12#2'}
{'age': 56, 'id': '12#2'}
{'age': 90, 'id': '12#2'}
{'age': 12, 'id': '12#3'}   

これは最初に ID でソートされ、次に年齢 (昇順) でソートされます。

別の方法として、ASC を ID で、DESC を年齢で並べ替えたい場合は、次のようにすることができます。

demo= [{'age': 90, 'id': '12#2'},
{'age': 12, 'id': '12#3'},
{'age': 67, 'id': '12#1'},
{'age': 56, 'id': '12#2'},
{'age': 34, 'id': '12#2'}]

a = sorted(demo, key=lambda x: (x['id'], -x['age']))

for el in a:
    print el

を与える

{'age': 67, 'id': '12#1'}
{'age': 90, 'id': '12#2'}
{'age': 56, 'id': '12#2'}
{'age': 34, 'id': '12#2'}
{'age': 12, 'id': '12#3'}
于 2013-08-05T10:41:19.787 に答える
1

Ifdemoはリストです (括弧とコンマに注意してください)

demo= [{'age': 90, 'id': '12#2'},
       {'age': 12, 'id': '12#3'},
       {'age': 67, 'id': '12#1'},
       {'age': 56, 'id': '12#2'},
       {'age': 34, 'id': '12#2'}]

次に、次のように並べ替えることができますid

sorted(demo, key=lambda x: x['id']) 

例えば:

In [5]: sorted(demo, key=lambda x: x['id']) 
Out[5]: 
[{'age': 67, 'id': '12#1'},
 {'age': 90, 'id': '12#2'},
 {'age': 56, 'id': '12#2'},
 {'age': 34, 'id': '12#2'},
 {'age': 12, 'id': '12#3'}]
于 2013-08-05T10:39:53.657 に答える
0

あなたの例にはリストが含まれていません[]。辞書を用意する必要があります。私はあなたのためにそれを修正しました:

>>> demo= [{'age': 90, 'id': '12#2'},
{'age': 12, 'id': '12#3'},
{'age': 67, 'id': '12#1'},
{'age': 56, 'id': '12#2'},
{'age': 34, 'id': '12#2'}]
>>> sorted(demo, key=lambda x: x['id'])
[{'age': 67, 'id': '12#1'}, 
{'age': 90, 'id': '12#2'}, 
{'age': 56, 'id': '12#2'}, 
{'age': 34, 'id': '12#2'}, 
{'age': 12, 'id': '12#3'}]
于 2013-08-05T10:40:32.967 に答える