Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中拆分dict列表?_Python_List_Dictionary - Fatal编程技术网

如何在Python中拆分dict列表?

如何在Python中拆分dict列表?,python,list,dictionary,Python,List,Dictionary,我有上面的dict,我想把它分成一个子列表 lis_dict = [ {item: "some item"}, {quantity: 2}, {id: 10}, {quantity: 2}, {id: 11}, {quantity: 2}, {quantity: 2}, {id: 12} ] 该问题要求按“id”将列表拆分为嵌套列表 输入: result = [ [{item: "some it

我有上面的
dict
,我想把它分成一个子列表

lis_dict = [
   {item: "some item"}, 
   {quantity: 2}, 
   {id: 10}, 
   {quantity: 2}, 
   {id: 11}, 
   {quantity: 2}, 
   {quantity: 2}, 
   {id: 12}
]

该问题要求按“id”将列表拆分为嵌套列表

输入:

result  = [
   [{item: "some item"}, {quantity: 2}, {id: 10}],
   [{quantity: 2}, {id: 11}],
   [{quantity: 2}, {quantity: 2}, {id: 12}]
]
代码:

印刷品:

result = []
s = 0
for i,j in enumerate(lis_dict):
    if ("id" in j.keys()):
        result.append(lis_dict[s:i+1])
        s = i+1

更通用的方法可能是以下方法(您可以在子列表中添加更多词典):


这份目录的来源是什么?你能更正一下你的代码吗。您给定的词典列表不是有效的python语法。您还可以解释一下,根据什么标准来拆分列表。@sharath您是对的假设您的dict键是字符串,我不明白为什么您会对每个键值对使用一个dict。也许像
{“item”:“some item”,“quantity”:2,“id”:12}
这样的dict格式,并在
lis_dict
中存储这样的dict列表,对您的情况会更好。@kalakota vishnu这就是您所期望的吗?这很有效,谢谢。如何在每个列表中添加项目。例如
[[{'item':'some item'},{'quantity':2},{'id':10}],{'item':'some item'},{'item':'some item'},{'quantity':2},{'quantity':2},{'id':12}]
或类似的
[[{'item''item':'some item','id':2','id':10}],{'item':'some item','id':2','id:'11}][{'item':'some item','quantity':2,'id':12}]
result = []
s = 0
for i,j in enumerate(lis_dict):
    if ("id" in j.keys()):
        result.append(lis_dict[s:i+1])
        s = i+1
[[{'item': 'some item'}, {'quantity': 2}, {'id': 10}],
 [{'quantity': 2}, {'id': 11}],
 [{'quantity': 2}, {'quantity': 2}, {'id': 12}]]
lis_dict = [{'item': 'some item'},
 {'quantity': 2},
 {'id': 10},
 {'quantity': 2},
 {'item': 'some item'},
 {'id': 11},
 {'quantity': 2},
 {'quantity': 2},
 {'id': 12}]

result = []
sublist = []
for d in lis_dict:
    sublist.append(d)
    if d.get("id"):
        result.append(sublist)
        sublist = []

print(result)

# [[{'item': 'some item'}, {'quantity': 2}, {'id': 10}], [{'quantity': 2}, 
# {'item': 'some item'}, {'id': 11}], [{'quantity': 2}, {'quantity': 2}, {'id': 12}]]