这里有一些问题。
首先,您不能按浮点数进行索引,因为它没有任何意义。
其次,如果可以的话,解释/计算浮点数的方式存在问题(有时您的结果类似于 3.99999999 而不是 4 的原因)。
我的建议是使用四舍五入到一定小数位数的字典来索引您的值。这样您将确保您的数据始终匹配!
由于您无法通过不可变键映射内容,因此您需要一个元组。
这是如何工作的示例:
mydict = {}
a = (41.797, 34.0)
object_a = 'A'
b = (42.152, 34.56)
object_b 'B'
mydict[round(a[0], 3), round(a[1], 3)] = object_a
mydict[round(b[0], 3), round(b[1], 3)] = object_b
print ( my_dict[round(a[0], 3), round(a[1], 3)] )
print ( my_dict[round(b[0], 3), round(b[1], 3)] )
>> 'A'
>> 'B'
如果要更新对象,只需使用圆角元组
mydict[round(a[0], 3), round(a[1], 3)] = 'CHICKEN'
print ( my_dict[round(a[0], 3), round(a[1], 3)] )
print ( my_dict[round(b[0], 3), round(b[1], 3)] )
>> 'CHICKEN'
>> 'B'
如果代码变得太乱,只需添加一个函数来舍入元组:
def round_tuple(tupl, decimals=3):
return round(tupl[0], decimals), round(tupl[1], decimals)
This way you just do this:
target = round_tuple(tup)
mydict[target] = 'CHICKEN'