簡體   English   中英

如何對字典中的字典列表進行排序並在 python 中覆蓋它

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM