我的列表中有不同数量的商品,可以合并吗?
list1 = ['item1', 'item1', 'item2 x25', 'item3', 'item2 x5']
我正在寻求结合list1
和输出desired_list
desired_list = ['item1 x2', 'item2 x30', 'item3']
我的意思是,您似乎并没有尝试太多,所以我只会尝试朝着正确的方向前进。
您可以使用以下形式的.split():
for i, item in enumerate(list1):
list1[i] = item.split()
获得类似于以下内容的内容:
list1 = [['item1'], ['item1'], ['item2', 'x25'], ['item3'], ['item2', 'x30']]
这告诉您,如果列表的第二个元素中没有项目,则其数量为1,对于其余数量,您可以在x后面找到数量。您可以执行类似的操作来再次更改它。
for i, item in enumerate(list1):
if len(item) == 1:
item.append(1)
else:
list1[i][1] = item[1][1:]
然后将列表变成: list1 = [['item1', 1], ['item1', 1], ['item2', '25'], ['item3', 1], ['item2', '5']]
在哪里,每个元素的第一个元素告诉哪个项目,第二个元素告诉它的数量。然后,您可以找到类似的项目,并将它们的质量与类似
items = {}
for item in list1:
if item[0] not in items.keys():
else:
items[item[0]] += int(item[1])
然后list1 = list(items.items())
将其返回到提供所需输出[['item1',2),('item2',30),('item3',1)]的列表。当然,如果您希望采用“ item1 x2”格式,则可以执行以下操作:
for i, item in enumerate(list1):
list1[i] = " x".join(list1)
它将全部变回字符串,列表看起来像 list1 = ["item1 x2", "item2 x30", "item3 x1"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句