[英]arrange a list of dicts based on some elements of dict
我有一個字典,每個字典有5個元素,我需要根據列表中每個字典的2個元素對這個列表進行排序。 2個元素可以采用3個值。
這是一個例子:
list = [{ 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '3'}, { 'm' : '5', 'n', : '2', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '1', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '2'}]
因此,列表順序基於2個元素n和p,它們可以取3個值(1 2和3):1.如果n和p為1,則應將這些元素排在最前面2.如果n = 1且p = 2,則那些放置在下一個3.如果n = 1和p = 3,則放置在下一個4.如果p = 1和n = 2,則放置在下一個5。最后,如果p = 1和n = 3,則放置在下一個6.最后一個是p,n是3
在這種情況下,最終列表將是:
final_list = [{ 'm' : '3', 'n', : '1', 'o' : '7', 'p' : '1'}, { 'm' : '5', 'n', : '2', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '2'}, { 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '3'}]
有人可以給我最好的解決方案嗎?
為了使列表按特定順序排列,請使用sorted()
內置函數或list.sort()
方法。 要指定異常順序,請對這些函數之一使用key=
參數。 這是一個可能對您有用的電話:
result = sorted(list, key=lambda x: (x['n'], x['p']))
除了:不要將內置類型名稱用作變量名稱。 這樣做可能會在以后導致混亂。
示例程序:
list_ = [{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '3'},
{ 'm' : '5', 'n' : '2', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '1', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '2'}]
final_list = [{ 'm' : '3', 'n' : '1', 'o' : '7', 'p' : '1'},
{ 'm' : '5', 'n' : '2', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '2'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '3'}]
result = sorted(list_, key=lambda x: (x['n'], x['p']))
assert result == final_list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.