【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2020-02-23
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      相关资源
      最近更新 更多