繁体   English   中英

如何拆分 Python 中的字典列表?

[英]How do I split list of dict in Python?

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

我有上面的dict列表,我想将其分成一个子列表。

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

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

输入:

lis_dict
[{'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

印刷:

[[{'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}]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM