我有以下 CSV,这是 Python 中的字典输入。在本例中为 Test.csv。
Cust_Id, No_of_purchases, Amount
xxx0001, 2000,3000
xxx0002, 30 ,400
xxx0002, 20,500
下面的代码读取它并将字典键作为“Customer_ID”输出,其余的作为值输出。
with open('Test.csv', mode='r') as csv_input:
reader = [[x.strip() for x in rows.split(",")] for rows in csv_input.readlines()]
(customer_, *Purchases_amount), *row_values = reader
dict_ = {}
for each_row in row_values:
key, *values = each_row
dict_from_csv[key] = {key: value for key, value in zip(Purchases_amount, values)}
打印 dict_from_csv
的结果如下所示,加上另外两行。
{'xxx0001': {'No_of_purchases': '2000',
'Amount': '3000'}, .....
问题是:如果金额大于 1000,我如何应用 5% 的折扣,否则字典中“金额”值的折扣为 0?关键只是 Cust_Id。我有以下函数来计算折扣。如何将其应用于字典中的值“Amount”?
def givediscount (value):
dis= 0.05*value
nodiscount = 0
if value > 1000:
dis = nodiscount
break
nodiscount+=1
return dis
答案 0 :(得分:1)
你可以像这样在你的字典上应用一个函数:
def give_discount(row):
amount = row.get("Amount", 0)
if amount > 1000:
row["discounted_amount"] = 0.95 * amount
else:
row["discounted_amount"] = amount
return row
dict_from_csv = {k: give_discount(row) for k, row in dict_from_csv.items()}
答案 1 :(得分:0)
给定的折扣函数似乎是错误的。根据您的描述,这应该有效
def give_discount(amount):
if amount > 1000:
return amount * 0.95
return amount
您可以遍历字典中的元素并调用类似的函数
for i in dict_from_csv.keys():
dict_from_csv[i]['Amount'] = give_discount(dict_from_csv[i]['Amount'])