【问题标题】:Split a list of dictionaries into multiple chunks将字典列表拆分为多个块
【发布时间】:2021-10-23 19:01:39
【问题描述】:

我有这份清单

list_dict = [
 {'id': 1},
 {'item': 'apple'},
 {'id': 2},
 {'item': 'pear'},
 {'id': 1},
 {'item': 'peach'},
 {'id': 2},
 {'item': 'kiwi'},
 {'id': 3},
 {'item': 'banana'},
 {'id': 4},
 {'item': 'mango'},
 {'id': 1},
 {'item': 'watermelon'},
 {'id': 2},
 {'item': 'plum'},
 {'id': 3},
 {'item': 'grapes'}]

我想像这样拆分(当“id”为1时开始制作子列表)

result = [
 [{'id': 1},
  {'item': 'apple'},
  {'id': 2},
  {'item': 'pear'}],
 [{'id': 1},
  {'item': 'peach'},
  {'id': 2},
  {'item': 'kiwi'},
  {'id': 3},
  {'item': 'banana'},
  {'id': 4},
  {'item': 'mango'}],
 [{'id': 1},
  {'item': 'watermelon'},
  {'id': 2},
  {'item': 'plum'},
  {'id': 3},
  {'item': 'grapes'}]]

【问题讨论】:

  • 酷。你尝试了什么?你在哪里失败了?你有什么问题?
  • 恕我直言,这个问题非常清楚。

标签: python list dictionary split


【解决方案1】:

一些嵌套的 for 循环会起作用

list_dict = [{"id":1},{"item":"apple"},{"id":2},{"item":"pear"},{"id":1},{"item":"peach"},{"id":2},{"item":"kiwi"},{"id":3},{"item":"banana"},{"id":4},{"item":"mango"},{"id":1},{"item":"watermelon"},{"id":2},{"item":"plum"},{"id":3},{"item":"grapes"}]

output = []
temp = []
for i in list_dict:
  if i.get('id', -1) == 1 and temp:
    output.append(temp.copy())
    temp.clear()
    temp.append(i)
  else:
    temp.append(i)

output.append(temp.copy())

print(output)
#[[{'id': 1}, {'item': 'apple'}, {'id': 2}, {'item': 'pear'}], [{'id': 1}, {'item': 'peach'}, {'id': 2}, {'item': 'kiwi'}, {'id': 3}, {'item': 'banana'}, {'id': 4}, {'item': 'mango'}], [{'id': 1}, {'item': 'watermelon'}, {'id': 2}, {'item': 'plum'}, {'id': 3}, {'item': 'grapes'}]]

【讨论】:

    【解决方案2】:

    也许是这样的?

    main_list = []
    current_list = []
    for el in list_dict:
        if el.get("id", 0) == 1:
            if current_list:
                main_list.append(current_list)
            current_list = [el]
        else:
            current_list.append(el)
    
    if current_list:
        main_list.append(current_list)
        
    print(main_list)
    

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 2020-04-23
      • 2021-09-09
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多