python - 如何对字典中的字典列表进行排序并在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'))
推荐阅读
- javascript - 如何以特定格式显示当前日期和时间?
- sql - 为什么“DD/MM/YYYY”在过滤器中不起作用?
- javascript - 错误 [ERR_HTTP_HEADERS_SENT]:在 ServerResponse.setHeader (_http_outgoing.js:518:11) 将标头发送到客户端后无法设置标头
- apache-kafka - Flink - 如何使用 withTimestampAssigner 从事件有效负载中获取时间(不使用 Kafka 时间戳)
- javascript - 从 uri 或 require 对本机图像源做出反应
- elixir - Elixir Simple 模块仅产生“参数错误”
- java - 如何分配一个长的十六进制值,我应该在 Java 中将它分配给什么数据类型?
- javascript - Quill.js 不断从锚标签中剥离类
- python - 如何重命名通过 Django Rest Framework 上传的图像
- python - 如何卸载并重新安装 anaconda naviator