gpt4 book ai didi

python - 如何检查列表中列表的唯一性?

转载 作者:行者123 更新时间:2023-11-28 22:21:39 25 4
gpt4 key购买 nike

我有这个数据:

[[prodcutname,price_rate,price,quantity]]

[['phone', '500', 450.0, 1], ['phone', '500', 2250.0, 5], ['camera', '200', 1080.0, 6], ['laptop', '600', 540.0, 1], ['laptop', '600', 540.0, 1],['laptop', '600', 540.0, 1]]

现在,我需要做的是创建一个仅包含唯一元素(产品)的新列表,并添加同一产品的其他值并将它们放入列表中。理想的输出应该是这样的:

[['phone','500',2700,6],['camera','220',1080,6],....]

我尝试使用 -

unique_list = ['phone', '500', 450.0, 1]

big_list = []
mylist = []

for i in range(len(larger_list)):
for j in range(1,len(larger_list)):
if(larger_list[i][0]==larger_list[j][0]):
# Getting the sum or prices and number
#Sum of price
larger_list[j][2]=larger_list[i][2]+larger_list[j][2]

#Sum of number
larger_list[j][3]=larger_list[i][3]+larger_list[j][3]

#Adding into a new list
unique_list[0]=larger_list[i][0]
unique_list[1]=larger_list[i][1]
unique_list[2]=larger_list[j][2]
unique_list[3]=larger_list[j][3]

mylist.append(unique_list)
big_list.append(mylist)
mylist = []

return big_list

但是遇到了很多错误都无济于事。我什至尝试将它们放入字典中。我该如何在 Python 中执行此操作?

最佳答案

Python 中的字典与单词 Dictionary 的含义完全相同。这意味着,您可以直接使用关键字轻松查找任何 keywordValue。不幸的是,这对于 list 是不可能的,因为列表是 numerically 索引的。因此,建议首先将您的列表转换为字典,原因有两个:
1:更容易将给定数据映射到Individual键。
2:处理数据值以获得所需的结果。

Print 的结果所示,现在可以更轻松地访问任何通过使用键(甚至在循环中)的数据。例如,要获取电话的价格,您可以简单地执行:
dictList['phone']['price'] 这比做类似的事情:flatList[0][2] 这真的不是那么直观....

product_list    = [
['phone', '500', 450.0, 1],
['phone', '500', 2250.0, 5],
['camera', '200', 1080.0, 6],
['laptop', '600', 540.0, 1],
['laptop', '600', 540.0, 1],
['laptop', '600', 540.0, 1]
]

# CREATE A LIST OF DICTIONARY FROM GIVEN DATA FOR EASIER MAPPING
item = ["product_name", "price_rate", "price", "quantity"]
dictList = {}
for data in product_list:
if data[0] not in dictList:
dictList[data[0]] = dict(zip(item, data))
else:
tmpD = dict(zip(item, data))
dictList[data[0]]["price"] = float(dictList[data[0]]["price"]) + float(tmpD['price'])
dictList[data[0]]["quantity"] = float(dictList[data[0]]["quantity"]) + float(tmpD['quantity'])
# dictList[data[0]]["price_rate"] = float(dictList[data[0]]["price_rate"]) + float(tmpD['price_rate'])

print(dictList)
## PRINTS:
## {
## 'phone': {'product_name': 'phone', 'price_rate': '500', 'price': 2700.0, 'quantity': 6.0},
## 'camera': {'product_name': 'camera', 'price_rate': '200', 'price': 1080.0, 'quantity': 6},
## 'laptop': {'product_name': 'laptop', 'price_rate': '600', 'price': 1620.0, 'quantity': 3.0}
## }

但是,如果出于任何原因您需要将数据作为列表,使用简单的列表组合也很容易,如下所示:

item        = ["product_name", "price_rate", "price", "quantity"]
dictList = {}
for data in product_list:
if data[0] not in dictList:
dictList[data[0]] = dict(zip(item, data))
else:
tmpD = dict(zip(item, data))
dictList[data[0]]["price"] = float(dictList[data[0]]["price"]) + float(tmpD['price'])
dictList[data[0]]["quantity"] = float(dictList[data[0]]["quantity"]) + float(tmpD['quantity'])
# dictList[data[0]]["price_rate"] = float(dictList[data[0]]["price_rate"]) + float(tmpD['price_rate'])

arrayList = [ list(dVal.values()) for dKey, dVal in dictList.items() ]
print(arrayList)
## PRINTS:
## [
## ['phone', '500', 2700.0, 6.0],
## ['camera', '200', 1080.0, 6],
## ['laptop', '600', 1620.0, 3.0]
## ]

关于python - 如何检查列表中列表的唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48207313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com