我有一个 JSON 对象列表,已经排序(比如说按时间排序)。每个 JSON 对象都有 type
和 status
。例如:
[
{'type': 'A', 'status': 'ok'},
{'type': 'B', 'status': 'ok'},
{'type': 'A', 'status': 'fail'}
]
我想将其转换为:
{
'A': ['ok', 'fail'],
'B': ['ok']
}
当然,这是一项简单的任务,但我正在寻找 Pythonic 的方式来做到这一点,这样我就可以节省几行代码
最佳答案
我不知道是否有单行,但你可以使用setdefault
或defaultdict
达到预期的结果:
data = [
{'type': 'A', 'status': 'ok'},
{'type': 'B', 'status': 'ok'},
{'type': 'A', 'status': 'fail'}
]
使用setdefault()
:
res = {}
for elt in data:
res.setdefault(elt['type'], []).append(elt['status'])
输出:
{'A': ['ok', 'fail'], 'B': ['ok']}
使用defaultdict
:
from collections import defaultdict
res = defaultdict(list)
for elt in data:
res[elt['type']].append(elt['status'])
输出:
defaultdict(<class 'list'>, {'A': ['ok', 'fail'], 'B': ['ok']})
关于python - 将对象列表转换为列表字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66901136/