【问题标题】:Combine 2 elements in a list into a nested list将列表中的 2 个元素组合成嵌套列表
【发布时间】:2020-12-12 02:29:56
【问题描述】:

我正在尝试组合列表中的两个元素以在原始列表中形成嵌套列表。我被困住了。我可以遍历列表并获取特定元素,但我不确定如何在原始列表中创建嵌套列表。

这是原始列​​表。

[
  {'LIN02': 'GS', 'LIN04': 'MF', 'LIN03': 'BOSEF2', 'LIN06': 'ST', 'LIN05': 'BOSTIK', 'LIN07': 'BOSEF2', 'id': 'LIN'}, 
  {'PID02': 'TRN', 'PID01': 'F', 'PID05': 'EFA+ 28 OZ TUBE ADHESIVE', 'id': 'PID'}, 
  {'PID02': 'MAC', 'PID01': 'F', 'PID05': 'INSADH', 'id': 'PID'},
  {'MEA04': 'EA', 'MEA03': '1.000', 'MEA02': 'SU', 'id': 'MEA'}
]

我希望它像这样输出。

[
  {'LIN02': 'GS', 'LIN04': 'MF', 'LIN03': 'BOSEF2', 'LIN06': 'ST', 'LIN05': 'BOSTIK', 'LIN07': 'BOSEF2', 'id': 'LIN'}, 
  [
    {'PID02': 'TRN', 'PID01': 'F', 'PID05': 'EFA+ 28 OZ TUBE ADHESIVE', 'id': 'PID'}, 
    {'PID02': 'MAC', 'PID01': 'F', 'PID05': 'INSADH', 'id': 'PID'}
  ],
  {'MEA04': 'EA', 'MEA03': '1.000', 'MEA02': 'SU', 'id': 'MEA'}
]

这是我目前所拥有的。

loop_2000 = ['LIN02': 'GS', 'LIN04': 'MF', 'LIN03': 'BOSEF2', 'LIN06': 'ST', 'LIN05': 'BOSTIK', 'LIN07': 'BOSEF2', 'id': 'LIN'}, {'PID02': 'TRN', 'PID01': 'F', 'PID05': 'EFA+ 28 OZ TUBE ADHESIVE', 'id': 'PID'}, {'PID02': 'MAC', 'PID01': 'F', 'PID05': 'INSADH', 'id': 'PID'}, {'MEA04': 'EA', 'MEA03': '1.000', 'MEA02': 'SU', 'id': 'MEA'}]
for n in enumerate(loop_2000):
for line in enumerate(n[1]):
    if line[1]["id"] == "PID":
        print(line)

不确定这是否是解决此问题的最有效方法,但我找到了解决方法。

pid_list = []
pid_index = []
for line in enumerate(loop_2000):
    if line[1]["id"] == "PID":
        pid_index.append(line[0])
        pid_list.append(line[1])
loop_2000.insert(line[0], pid_list)
del loop_2000[pid_index[0]: pid_index[0] + 2]

【问题讨论】:

  • 输出将列表中的这两个元素组合为嵌套列表... {'PID02': 'TRN', 'PID01': 'F', 'PID05': 'EFA+ 28 OZ TUBE ADHESIVE','id':'PID'},{'PID02':'MAC','PID01':'F','PID05':'INSADH','id':'PID'}。一个更易读的例子是 original = [1,2,3,4,5,6] newlist = [1,2,[3,4],5,6]
  • 我只是想知道你为什么要做这样的事情。您的结构不再一致。有意义的是将所有 LIN 放在一起,将所有 PID 放在一起,最后将 MEA 放在各自的嵌套列表中。
  • 我最终使用 json.dump(loop_2000, filename, indent=4) 将列表转换为 json 文件,但我需要 PID 元素是数组中的两个单独的 json 对象。

标签: python list nested


【解决方案1】:

试试这个。

list2 = []
list2 = [element for element in list1 if element['id'] !='PID']
list2.append([element for element in list1 if element['id'] =='PID'])

【讨论】:

    猜你喜欢
    • 2013-04-05
    • 2021-02-11
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多