我正在与将用于跟踪几个美元余额的字典一起工作。为此,我使用了包含在类中的以下字典:
principal = {"A": 2998.41, "B": 5794.58, "C": 3806.04, "D": 4190.39, "E": 4638.05, "F": 1827.17, "G": 4618.19, "H": 1737.77, }
priority = {"A": 6, "B": 5, "C": 2, "D": 1, "E": 4, "F": 3, "G": 8, "H": 7}
这些最终将达到零,但是由于这可能在不同的时间发生,因此我需要一种方法来确定何时偿还了哪一个。作为类函数的一部分,我有以下代码:
for key, value in self.principal.items():
# Check to ensure a pmt would not cause a group's balance to be paid off and become negative.
# If it would, apply the excess to the next-highest priority group.
if (self.principal[key] * (1 + self.int_monthly[key])) - self.pmts[key] <= 0:
del (self.priority[self.groups[key]])
excess = round((self.pmts[key] - self.principal[key] * (1 + self.int_monthly[key])), 2)
print("Excess from group "+str(self.principal[key])+": $"+str(excess))
pmts和int_monthly也是字典,并且计算工作正常,因为它们的值是通过访问dict [key]来拉取的,但是例如,对于delete和print语句,我想知道什么 key 已付款并从字典中将其删除,而不返回该键的当前值。
按现状,此代码将引发KeyError,因为字典“ priority”中没有“ D”键。对我而言,字典的所有内容似乎都不允许我基于这样的可变值来访问键。
如果我提前知道要访问哪个密钥,那将很容易(我只是说self.principal [“ key”])。但是,我在四处看看Google和Google之后开始思考,仅使用字典可能没有办法做到这一点。是否有解决此问题的常用解决方法?
答案 0 :(得分:0)
您无法从值中获取字典的键,但是可以迭代dict值并在值与您的值匹配时返回键
示例:
d = {1:'one'}
a = 'one'
for key, value in d.items():
if value = a:
print(key)
输出:
1
键不存在