在给定的情况下,如何在字典中找到衣服的总价?



如果python字典是这样的,我怎么能找到衣服的总价格呢?

{
1: ['Shirt', ' Dior', 16, ' $1500'], 
2: ['Skirt', ' Chanel', ' 13', '$ 500'], 
3: ['Scarf', ' LV', ' 2', ' $500'], 
4: ['Pants', 'Gucci', ' 10', '$200'], 
5: ['Coat', 'Armani', ' 8', '$6000']
}

这个想法是使用re来提取价格

import re
data = {1: ['Shirt', ' Dior', 16, ' $1500'], 2: ['Skirt', ' Chanel', ' 13', '$ 500'],
3: ['Scarf', ' LV', ' 2', ' $500'], 4: ['Pants', 'Gucci', ' 10', '$200'], 5: ['Coat', 'Armani', ' 8', '$6000']}
price = 0
for v in data.values():
temp = v[-1].strip()
price += int(re.findall(r'd+',temp)[0])
print(f'Total price: ${price}')

输出
Total price: $8700

如果最后一项之前的条目(16,13等)是项目的数量,我们需要将其相乘-下面的

import re
data = {1: ['Shirt', ' Dior', 16, ' $1500'], 2: ['Skirt', ' Chanel', ' 13', '$ 500'],
3: ['Scarf', ' LV', ' 2', ' $500'], 4: ['Pants', 'Gucci', ' 10', '$200'], 5: ['Coat', 'Armani', ' 8', '$6000']}
price = 0
for v in data.values():
temp_price = v[-1].strip()
cnt = v[-2]
if isinstance(cnt,str):
cnt = int(cnt.strip())
price += (int(re.findall(r'd+', temp_price)[0]) * cnt)
print(f'Total price: ${price}')

输出
Total price: $81500

不太清楚,如果你想要按每个类型或总的总和。

如果您愿意,可以根据使用pandas

的类型执行以下操作
import pandas as pd
c =  {
1: ['Shirt', ' Dior', 16, ' $1500'], 
2: ['Skirt', ' Chanel', 13, '$500'], 
3: ['Scarf', ' LV', 2, ' $500'], 
4: ['Pants', 'Gucci', 10, '$200'], 
5: ['Coat', 'Armani',  8, '$6000']
}
df = pd.DataFrame(c).T
df = df.rename(columns={0:"type",1:"brand",2:"quantities",3: "price"})
df["price_clean"]  = df["price"].apply(lambda x: int(x.split("$")[1]))
df["total"] = df["quantities"] * df["price_clean"]

现在计算总金额:df.total.sum()

相关内容

最新更新