如何在python中使用整数作为键?
在下面的代码中,我想在dict中使用整数作为键:如何在python中使用整数作为键?,python,dictionary,Python,Dictionary,在下面的代码中,我想在dict中使用整数作为键: import itertools N = {} for a,b,c,d in itertools.product(range(100), repeat=4): x = a*a + c*c y = a*b + c*d z = b*b + d*d s = x + y + y + z N[s] += 1 print N 我在N[s]+=1处得到一个KeyError:0。为什么会这样?报告说 字符串和数字始
import itertools
N = {}
for a,b,c,d in itertools.product(range(100), repeat=4):
x = a*a + c*c
y = a*b + c*d
z = b*b + d*d
s = x + y + y + z
N[s] += 1
print N
我在N[s]+=1
处得到一个KeyError:0
。为什么会这样?报告说
字符串和数字始终可以是键
on键错误
:
每当请求dict()对象时(使用
格式a=adict[key]
)和键不在字典中
我想做的是用未知的键(它们是动态计算的)构建一个dict,并为它们保留一个计数器。我以前做过(用字符串作为键),那么这次我做错了什么?(我知道-这肯定是非常明显的,但在一段时间后,我需要帮助:)在您的第一次迭代中,
N
是空的,但是您正在尝试访问N[0]
您可以使用
if s in N:
N[s] += 1
else:
N[s] = 0 # or 1 or whatever
但是正如@monkut在评论中所说的,您应该在第一次迭代中使用一个,
N
为空,但是您正在尝试访问N[0]
您可以使用
if s in N:
N[s] += 1
else:
N[s] = 0 # or 1 or whatever
但正如@monkut在评论中所说的,你应该使用
使用
计数器是最好的,因为它有分析结果的方法,但您也可以使用defaultdict
:
from collections import defaultdict
N = defaultdict(int)
如果键不存在,则值将初始化为int
的默认值,即零。计数器最好,因为它有分析结果的方法,但您也可以使用defaultdict
:
from collections import defaultdict
N = defaultdict(int)
如果密钥不存在,该值将被初始化为int
的默认值,即零。您的密钥未定义,因此您会得到一个错误。(不能向不存在的内容添加1)。您可能想使用计数器
,从集合导入计数器;N=Counter()
谢谢-我关注的是键的存在,而不是值。作为StackOverflow哲学的一个附带问题:为什么这样的问题会被否决?(我理解否决票的概念,我想知道为什么这个问题不合适)你的问题很好。您提供了实际的代码,列出了收到的错误,并尝试破译错误。如果人们不喜欢你的问题,他们应该留下一条评论,说明原因。你的密钥没有定义,因此你会得到一个错误。(不能向不存在的内容添加1)。您可能想使用计数器
,从集合导入计数器;N=Counter()
谢谢-我关注的是键的存在,而不是值。作为StackOverflow哲学的一个附带问题:为什么这样的问题会被否决?(我理解否决票的概念,我想知道为什么这个问题不合适)你的问题很好。您提供了实际的代码,列出了收到的错误,并尝试破译错误。如果人们不喜欢你的问题,他们应该留下评论,说明原因。谢谢-我不知道计数器,它确实简化了代码。谢谢-我不知道计数器,它确实简化了代码。