[英]How to sort a list of dictionaries in a dictionary and overwrite it in python
我有字典,其中包含字典列表:
example = {
"first": [
{"a": 1, "b": 2},
{"a": 0, "x": 5}
],
"second": [
{"a": 5, "b": 2},
{"a": 2, "x": 5}
]
}
我想根據鍵“a”的值對列表“第一”和“第二”進行排序。 期望的結果是:
desired = {
"first": [
{"a": 0, "x": 5},
{"a": 1, "b": 2}
],
"second": [
{"a": 2, "x": 5},
{"a": 5, "b": 2}
]
}
現在,我不想創建全新的字典。 只需更新“示例”字典中的“第一”和“第二”列表。 我嘗試了什么:
from operator import itemgetter
for k, v in example.items():
v = sorted(v, key=itemgetter('a'))
這對我的示例字典沒有影響。 但是它適用於單個列表,例如:
x = [{"a": 1, "b": 2},
{"a": 0, "x": 5}
]
z = sorted(x, key = itemgetter('a'))
>>> print(z)
[{'a': 0, 'x': 5}, {'a': 1, 'b': 2}]
這是因為當您分配排序列表時,您只是使“標簽” v
指向排序列表,而不是將其寫入字典。 見下文,該代碼應該做你想做的事。
for k, v in example.items():
example[k] = sorted(v, key=itemgetter('a'))
sorted
返回一個新的排序列表。 列表上有一個內置sort
方法,可以對列表進行就地排序。
for v in example.values():
v.sort(key=itemgetter('a'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.