我的数据包含大约10,000个条目。每行是特定货币的产品价格。例如:
- Purchase 1 = 10.25 USD
- Purchase 2 = 11.76 SEK
我有十种不同的数据库列来表示每种货币的总销售额(这是一项要求)。列是earnings_in_usd
,earnings_in_sek
,earnings_in_eur
等。在我对数据库执行insert语句的函数中,我需要定义必要的变量。默认情况下,所有其他条目将为0.00。这基本上是完成我需要做的事情的代码:
if currency == 'USD':
earnings_in_usd = value
elif currency == 'SEK':
earnings_in_sek = value
elif ...
有没有更简单的方法来实现这一点(对于像income_in_ $ = value这样的方法)?
答案 0 :(得分:6)
使用以货币为索引的defaultdict
。
from collections import defaultdict
earnings = defaultdict(float) # float has a default value of 0.
使用这一行:
,而不是你的if-then-elseearnings[currency] = value
并使用
检索收入,例如US $earnings["USD"]
答案 1 :(得分:0)
也许使用字典?
earnings = {}
earnings[currency] = value
答案 2 :(得分:0)
这样做的一种方法是使用list comprehension:
,这可能会让人感到困惑。earnings_in_usd, earnings_in_sek, ... = [(value if currency == c else 0) for c in CURRENCIES]
缺点是左侧必须包含所有变量,而CURRENCIES必须是一个字符串常量列表,其顺序与左侧的变量完全相同。就像我说的,如果你篡改程序的其他部分,这可能会很好地破解......
答案 3 :(得分:-1)
如果收入是对象/数组,那么
earnings[currency] = value
或
earnings.currency = value;