【问题标题】:Can both the values and keys of a dictionary be integers?字典的值和键都可以是整数吗?
【发布时间】:2017-06-29 00:55:06
【问题描述】:

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

【问题讨论】:

    标签: python


    【解决方案1】:

    当然!来自 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}
    

    同样,python 中另一种常见的不可变类型是元组,(..., ..., ...),您也可以将其用于键:

    >>> {(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)}
    

    【讨论】:

    • 您好,我只是想知道您喜欢哪种类型的钥匙?整数还是字符串?谢谢~
    • 两者都很好,我根据情况使用两者。如果我从某个字符串字段中获取输入(比如 URL 中的查询字符串、用户输入或文本文件中的某些内容),那么坚持使用字符串通常是有意义的。但如上面的示例所示,dicts 作为伪函数工作得很好,在这种情况下,将它们保留为整数可能很有意义。我有时也使用元组作为键,因为我经常使用图像/矩阵,所以我可能想要一个点/坐标作为键并在那里使用一个元组。任何密钥类型都有用处,只需使用最适合您的问题的。
    • 感谢您提供所有详细信息!最近刚好碰到一个情况,key是integers,不知道是保留还是改成string。感谢您的回答,并帮助我解决这个问题!
    【解决方案2】:

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

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

    然后你会得到put 2。

    【讨论】:

      【解决方案3】:

      任何不可变的都可以是字典键。像字符串,数字,元组等。 不能作为键的类型是可变实体,如列表、集合等。

      【讨论】:

        【解决方案4】:

        键总是一个字符串。它可以是一个数字,但它始终是一个字符串。

        是的。

        https://docs.python.org/3/tutorial/datastructures.html#dictionaries

        "...可以是任何不可变类型;字符串和数字总是可以 钥匙……”

        【讨论】:

        • 从您发布的链接的字面上看:“与由一系列数字索引的序列不同,字典由键索引,可以是任何不可变类型;字符串和数字始终可以是键。”
        • @viraptor 对。谢谢。我只是浏览了一下以确认我的假设。这对我来说是个新闻。当我试图回答一个问题时,我感到压力很大;就像我打字的速度不够快,并且不允许进行深入的研究。我想这不是适合我的工作。
        • @veganaiZe 你是对的,快速回答是游戏,有时你会错过。但是当您这样做时,您通常希望减少损失并删除帖子。 ;)
        • @ParticlePaul 感谢您的建议。我会把我的错误留给后人从我的错误中吸取教训。但从这篇文章的“残疾灰色”颜色来看,我想我将是唯一一个从中学到任何东西的人。 =]
        • @veganaiZe 不!我也能看到这一点,并向您致敬,因为您将其留在这里作为对其他人的警告信号。我同意:回答新问题压力太大。我更喜欢回答年长的。
        猜你喜欢
        • 2021-09-01
        • 1970-01-01
        • 2016-03-31
        • 2021-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-21
        • 2014-10-28
        相关资源
        最近更新 更多