【发布时间】: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 对象。