【发布时间】:2015-11-19 11:04:58
【问题描述】:
我正在处理http://www.mypythonquiz.com,question #45 要求输出以下代码:
confusion = {}
confusion[1] = 1
confusion['1'] = 2
confusion[1.0] = 4
sum = 0
for k in confusion:
sum += confusion[k]
print sum
输出为6,因为1.0 替换了1。这对我来说有点危险,这是一个有用的语言功能吗?
【问题讨论】:
-
使用内置的
sum作为变量也(稍微)令人困惑。即使语言允许,我也不相信尝试将浮点数用作 int 键的代码,即使我确信在某些情况下它可能有用。 -
这只会在您认为
1.0和1不同的情况下伤害您。鉴于这些情况(表面上)很少见,默认行为是平等对待它们是可以理解的。 -
@JohnColeman 我会怀疑包含不相交类型作为键的 any 字典。
-
@MarkRansom 好点。无论如何,99% 的时间我只是使用字符串或整数(或由它们构建的各种元组)。我真的不相信浮动键。
-
@Bakuriu 您的标题编辑改变了问题的精神,我的兴趣主要是这种行为是否有用/它如何与 Python 语言的其余部分相适应,而不仅仅是“为什么”这样行为发生。尽管如此,关于最初的问题,还是出现了许多好的答案。
标签: python python-2.7 dictionary floating-point int