【问题标题】:Can someone explain this dictionary behaviour?有人可以解释这种字典行为吗?
【发布时间】:2013-11-30 05:23:00
【问题描述】:
>>> data = "0:1:2"
>>> h2 = data[0]
>>> a = {0: "... ", 1: "..- ", 2: ".-."}
>>> print (0 in a)
True
>>> print (h2)
0
>>> print (h2 in a)
False
>>> print (a.keys())
dict_keys([0, 1, 2])
别名有问题吗?
【问题讨论】:
标签:
python
python-3.x
dictionary
【解决方案1】:
h2 是一个 字符串 值,但您的字典键是 整数。仅包含数字的整数和字符串 print 相同,但 不 类型相同,并且与 JavaScript 不同,Python 不认为它们相等或在整数和字符串之间进行强制转换。
首先将字符串显式转换为整数:
>>> type(h2)
<class 'str'>
>>> type(next(a)) # first key in a
<class 'int'>
>>> int(h2) in a
True
>>> a[int(h2)]
'... '
要正确查看不同类型之间的差异,请在打印时使用repr():
>>> print(repr(h2))
'0'
>>> print(repr(0))
0
注意字符串值的引号。 Python 交互式 shell 在回显值时默认使用 repr()(回显除 None 之外的所有内容):
>>> 'a string value'
'a string value'
>>> 42
42