Python 字典的值和键都可以是整数吗?

Python 字典的值和键都可以是整数吗?,python,Python,在python中,字典的值和键都可以是整数吗?或者我需要其中一个像字符串之类的东西吗?当然!从python文档中: 5.5。字典 Python中内置的另一种有用的数据类型是字典(请参见映射类型-dict)。字典有时在其他语言中被称为“联想记忆”或“联想数组”。与序列不同,序列由一系列数字索引,字典由键索引,键可以是任何不可变类型;字符串和数字始终可以是键。如果元组只包含字符串、数字或元组,则元组可以用作键;如果元组直接或间接包含任何可变对象,则不能将其用作键。不能将列表用作键,因为可以使用索引分

在python中,字典的值和键都可以是整数吗?或者我需要其中一个像字符串之类的东西吗?

当然!从python文档中:

5.5。字典

Python中内置的另一种有用的数据类型是字典(请参见映射类型-dict)。字典有时在其他语言中被称为“联想记忆”或“联想数组”。与序列不同,序列由一系列数字索引,字典由键索引,键可以是任何不可变类型;字符串和数字始终可以是键。如果元组只包含字符串、数字或元组,则元组可以用作键;如果元组直接或间接包含任何可变对象,则不能将其用作键。不能将列表用作键,因为可以使用索引分配、切片分配或append()和extend()等方法就地修改列表

您还可以快速试用:

>>> dict = {1:0, 2:1}
>>> dict[1]
0
>>> dict[2]
1
我喜欢页面上的一个示例,因为它使用了字典理解(2.7+中新增的),其工作方式类似于函数:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
因为它适用于任何不可变类型,所以您甚至可以对键使用浮动:

>>> {x: x**2 for x in (1, 1.5, 2)}
{1: 1, 1.5: 2.25, 2: 4}
>>> {(x,y): (x**2,y**2) for x in range(3) for y in range(2)}
{(0, 0): (0, 0), 
(0, 1): (0, 1), 
(1, 0): (1, 0), 
(1, 1): (1, 1), 
(2, 0): (4, 0), 
(2, 1): (4, 1)}
同样,python中另一种常见的不可变类型是元组,
(…,…,…)
,您也可以将其用于键:

>>> {x: x**2 for x in (1, 1.5, 2)}
{1: 1, 1.5: 2.25, 2: 4}
>>> {(x,y): (x**2,y**2) for x in range(3) for y in range(2)}
{(0, 0): (0, 0), 
(0, 1): (0, 1), 
(1, 0): (1, 0), 
(1, 1): (1, 1), 
(2, 0): (4, 0), 
(2, 1): (4, 1)}
键总是一个字符串。它可以是一个数字,但它始终是一个字符串

“…可以是任何不可变类型;字符串和数字始终可以是 钥匙……”

当然。 举一个非常简单的例子: 在python解释器中,输入:

a = {1:2}  # define an dict
a[1] # get the value whose key is 1

然后,你将从你发布的链接中获得put 2。

字面意思是:“与序列不同,序列由一系列数字索引,字典由键索引,键可以是任何不可变类型;字符串和数字总是可以是键。”@viraptor Right。谢谢我只是略读了一下以证实我的假设。这对我来说是新闻。当我试图回答一个问题时,我感到压力很大;好像我打字不够快,这不允许进行彻底的研究。我想这不是适合我的工作。@veganaiZe你是对的,快速回答是游戏,有时你会错过。但是当你这样做的时候,你常常想减少损失,删除帖子@谢谢你的建议。我将把我的错误留给子孙后代,让他们从我的错误中吸取教训。但从这篇帖子的“残疾灰色”来看,我想我将是唯一一个从中吸取教训的人@素食主义不!我也看到了这一点,向你致敬,因为你把它留在这里,作为对其他人的警告。我同意:回答新问题的压力太大了。我更喜欢回答老的。嗨,我只是想知道你喜欢哪种类型的钥匙?整数还是字符串?Thx~两者都很好,我会根据情况使用。如果我从某个字符串字段(比如URL中的查询字符串、用户输入或文本文件中的某个内容)获取输入,那么只使用字符串通常是有意义的。但正如上面的例子所示,dict作为伪函数非常有效,在这种情况下,将它们保留为整数可能很有意义。有时我也使用元组作为键,因为我经常使用图像/矩阵,所以我可能需要一个点/坐标作为键,并在那里使用元组。任何密钥类型都有其用途,只需使用最适合您的问题的密钥即可。感谢所有详细信息!最近,我遇到了一个例子,键是
integer
s,但我想知道是应该保留它还是改为
string
。我很感激你的回答,并帮助我度过这场混乱!