您能否将长度不等的列表列表写入一系列列中,同时匹配另一个列表的顺序?
order = ['bx', 'cs', 'lb', 'pc']
totals = [
[{'unit': 'pc', 'sum': Decimal('3.00')}],
[{'unit': 'bx', 'sum': Decimal('3.00')}, {'unit': 'pc', 'sum': Decimal('16.00')}],
[{'unit': 'bx', 'sum': Decimal('6.00')}, {'unit': 'lb', 'sum': Decimal('24.00')}, {'unit': 'pc', 'sum': Decimal('63.00')}],
[{'unit': 'pc', 'sum': Decimal('36.00')}],
[{'unit': 'bx', 'sum': Decimal('31.00')}]
]
desired_format = [
['', '', '', '3.00 pc'],
['3.00 bx', '', '', '16.00 pc'],
['6.00 bx', '', '24.00 lb', '63:00 pc'],
['', '', '', '36:00 pc'],
['31.00 bx', '', '', ''],
]
我尝试了下面的代码,但如果按顺序没有出现所有四个单元,则无法达到预期的效果。
desired_format = [[]]
for total in totals:
data = []
for idx, um in enumerate(total):
if um['unit'] == order[idx]:
data.append(str(um['sum'] + ' ' + str(um['unit'])))
else:
data.append('')
desired_format.append(data)
我也尝试过这个方法,但最终出现了太多的空列和列顺序不均/无序的情况。
desired_format = [[]]
for total in totals:
data = []
for um in total:
for unit in order:
if um['unit'] == unit:
data.append(str(um['sum'] + ' ' + str(um['unit'])))
else:
data.append('')
desired_format.append(data)
['3.00 bx', '', '', '']
,就像你所说的那样,还是想要['', '', '', '3.00 pc']
? - Jon