如果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()