我是python新手,我正在尝试list comprehsion
我的列表字典。
我在list
内部的dictionaries
中有一个序列化响应,如下所示:-
[
{
"data": {
"id": 61,
"title": "First"
},
"type": "like"
},
{
"data": {
"id": 62,
"title": "Seven"
},
"type": "like"
},
{
"data": {
"id": 103,
"title": "Third",
},
"type": "dislike"
},
{
"data": {
"id": 7,
"title": "Fifth",
},
"type": "dislike"
}
]
列表中有多个具有相同type
key的字典,我正尝试将具有相同keys
的字典合并到一个列表中。
我想得到像:
[
{
"like": [
{
"id": 61,
"title": "First"},
{
"id": 62,
"title": "Second"
}
],
},
{
"dislike": [
{
"id": 103,
"title": "Third"
},
{
"id": 7,
"title": "Fifth"
}
],
},
]
我已经尝试使用set()
和union()
def comprehsion_method(list_dict):
converted_list = {
k : [d.get(k) for d in list_dict if k in d]
for k in set().union(*list_dict)
}
return converted_list
但是这个方法将所有的data
密钥合并成一个,并将所有的type
密钥合并成一个,如:-
{
"data": [
{
"id":61,
"title": "First"
},
{
"id":62,
"title": "Second"
},
{
"id":103,
"title": "Third"
},
{
"id":7,
"title": "Seven"
},
],
"type": [
"like",
"like",
"dislike",
"dislike"
]
}
我已经试过很多次了,但是还是不行。如果有任何帮助,我将非常感激。
1条答案
按热度按时间wj8zmpe11#
对于解析,尤其是复杂的解析,最好从写出显式循环开始。在这种情况下,你需要类似这样的代码:
在这个阶段,很明显这个函数试图聚合成一系列的列表--解析并没有设计成这样。虽然有可能将它转换成列表解析,但它可能相对复杂,比上面的代码可读性差--所以在这种情况下,我将保持原样。