iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Python的字典键名可以是哪些类型
  • 952
分享到

浅谈Python的字典键名可以是哪些类型

2024-04-02 19:04:59 952人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1 键的类型,列表/字典不可以,其它都可以2 多个对象可当作键名,顺序不同时是不同的键3 结论【有误】:今天看别人代码时发现一个事,就是把对象当作字典的键名,并且把两个对象(类的

今天看别人代码时发现一个事,就是把对象当作字典的键名,并且把两个对象(类的实例)当作键名,然后去查了下:

键必须是不可变的,如字符串,数字或元组。

1 键的类型,列表/字典不可以,其它都可以

但是网上却没有说其他类型可不可以,怎么用的。我写代码试了下:


class Person:
    def __init__(self, name):
        self.name = name

i = 5
s = 'abc'
t = (5,'a')
p = Person('Lily')
q = Person('xiao')
m = {'a':1, 'b':10}
lst = [1,2,3]

d = {}
d[i] = 'five'
d[s] = 'ABC'
d[t] = 'five-a'
d[p] = 'name:Lily'
# d[lst] = 'list : 1,2,3'
# TypeError: unhashable type: 'list'
d[p, q] = 'two people: Lily and xiao'
d[i,s,t,p,q] = 'all in key'

for k, v in d.items():
    print(k, '=>', v)

输出结果:

5 => five
abc => ABC
(5, 'a') => five-a
<__main__.Person object at 0x000001803EEF27F0> => name:Lily
(<__main__.Person object at 0x000001803EEF27F0>, <__main__.Person object at 0x000001803EEF28D0>) => two people: Lily and xiao
(5, 'abc', (5, 'a'), <__main__.Person object at 0x000001803EEF27F0>, <__main__.Person object at 0x000001803EEF28D0>) => all in key

2 多个对象可当作键名,顺序不同时是不同的键


print(d[p, q])
print(d[q, p])

输出:

two people: Lily and xiao
Traceback (most recent call last):

  File "<ipython-input-15-12aff481ab93>", line 1, in <module>
    runfile('C:/Users/Xpeng/.spyder-py3/temp.py', wdir='C:/Users/Xpeng/.spyder-py3')

  File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Xpeng/.spyder-py3/temp.py", line 37, in <module>
    print(d[q, p])

KeyError: (<__main__.Person object at 0x000001803EF58940>, <__main__.Person object at 0x000001803EF58668>)

3 结论【有误】:

(1)除了列表不能当作键名,其它都 可以,还可以放多个。
(2)我是这样理解的,列表是可变的,其他类型都是不可变的。对象作为键名时,实际传入的是对象的地址,也是不可变的。
(3)放多个时不同顺序时键不同。

------2020.04.07更新-----
感谢两次网友的提醒。
(1)准确的说是列表、字典这种不可哈希(unhashable)的类型不可当做键值,可哈希的类型才可当作键。

到此这篇关于浅谈Python的字典键名可以是哪些类型的文章就介绍到这了,更多相关Python 字典键名 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Python的字典键名可以是哪些类型

本文链接: https://www.lsjlt.com/news/134378.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Python的字典键名可以是哪些类型
    目录1 键的类型,列表/字典不可以,其它都可以2 多个对象可当作键名,顺序不同时是不同的键3 结论【有误】:今天看别人代码时发现一个事,就是把对象当作字典的键名,并且把两个对象(类的...
    99+
    2024-04-02
  • python中字典的键可以为哪些类型
    python中字典是一种可变容器模型,可以存储任意类型的对象,其中字典的值可以取任何数据类型,但字典的键必须是不可变类型,如字符串、数字和元组等。...
    99+
    2024-04-02
  • python字典数据类型有哪些
    Python字典数据类型是一种无序、可变、可迭代的数据类型,由键值对组成,键必须是唯一的且不可变,值可以是任意类型。常用的字典操作包...
    99+
    2023-05-13
    python字典数据类型 python
  • python字典键的特性有哪些
    这篇文章主要介绍python字典键的特性有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、不允许同一个键出现两次。创建时,如果同一个键被赋予两次值,则记住后一个值。dict = {'...
    99+
    2023-06-15
  • python中可以使用哪些方法创建字典
    python创建字典的方法:1.通过dict关键字创建;2.通过二元组列表创建;3.通过字典推导式创建;4.通过dict.fromkeys()函数创建;在python中创建字典的方法有以下几种通过dict关键字创建>>> ...
    99+
    2024-04-02
  • Python数据类型字典使用方法有哪些
    这篇文章主要讲解了“Python数据类型字典使用方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python数据类型字典使用方法有哪些”吧!字典的无序特性和创建:列表是有序的对象结合...
    99+
    2023-06-02
  • 解读Python中字典的key都可以是什么
    目录Python字典的key都可以是什么答解释注意Python字典的key都可以是什么 答 一个对象能不能作为字典的key,就取决于其有没有__hash__方法。所以所有python...
    99+
    2024-04-02
  • 企业可以建设哪些类型的网站
    企业可以建设哪些类型的网站?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一:基本信息型:该类型的网站主要是面向客户、业界认识或者普通浏览者,已介绍企业的基本资料、帮助树立企...
    99+
    2023-06-07
  • C#可以开发哪些类型的应用程序
    C#可以用于开发各种类型的应用程序,包括但不限于以下几种:桌面应用程序:使用C#和.NET Framework,你可以开发Windows桌面应用程序。这些应用程序可以提供丰富的用户界面和交互功能,适用于各种领域,如办公软件、图像处理工具、游...
    99+
    2023-10-22
    C#使用
  • Neuroph可以处理哪些类型的数据输入
    Neuroph可以处理各种类型的数据输入,包括数字、文本、图像、声音等。Neuroph支持多种数据输入格式,包括文本文件、图像文件、...
    99+
    2024-04-02
  • openSUSE可以运行哪些类型的应用程序
    openSUSE 可以运行各种类型的应用程序,包括但不限于: 桌面应用程序:如办公套件、图形设计工具、多媒体播放器等。 服务器应用...
    99+
    2024-04-02
  • Python中有哪些内置容器类型可以处理数组?
    Python是一种高级编程语言,具有简洁明了的语法和强大的内置库。在Python中,内置容器类型是一个非常重要的概念,可以用来存储和处理数据。在本文中,我们将介绍Python中的一些内置容器类型,以及如何使用它们来处理数组。 一、Pytho...
    99+
    2023-06-13
    关键字 容器 数组
  • 重定向关键字在Python中有哪些常见的数据类型?
    在Python中,重定向关键字是一种非常有用的工具,它可以将程序的输入和输出重定向到不同的位置,例如文件、管道或者网络连接。这种功能在处理大型数据集或者需要与其他程序进行通信时非常有用。 在本文中,我们将讨论Python中常见的重定向关键...
    99+
    2023-09-12
    重定向 关键字 数据类型
  • Python字典删除键值对和元素的方法有哪些
    这篇文章主要介绍“Python字典删除键值对和元素的方法有哪些”,在日常操作中,相信很多人在Python字典删除键值对和元素的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python字典删除键值对...
    99+
    2023-06-21
  • python中不可变的对象类型有哪些
    python中不可变的对象类型有:1、int数字类型;2、string字符串类型;3、float浮点型;4、tuple元组。具体示例分析:int数字类型,尝试修改数字对象。#新建数字对象1000>>> id(1000)53060472L#新...
    99+
    2024-04-02
  • 高防服务器可以防御哪些类型的攻击
    高防服务器可以防御的攻击类型有:1、TCP洪水攻击,导致服务器系统崩溃;2、UDP洪水攻击;3、ICMP洪流攻击,通过代理向受害主机发送大量ICMPECHoREQUEST(“ping’)报文;4、发送异常数据报攻击,发送IP碎片;5、对邮件...
    99+
    2024-04-02
  • 负载均衡器可以用于哪些类型的服务
    负载均衡器可以用于各种类型的服务,包括但不限于: 网站和应用程序服务:负载均衡器可以帮助分发网站和应用程序的流量,确保每个用户都...
    99+
    2024-04-17
    负载均衡
  • 高防云服务器可以防御哪些类型的攻击
    高防云服务器可以防御的攻击类型有:1、带宽消耗攻击,例如:TCP洪水攻击、UDP以及ICMP洪流攻击;2、系统资源消耗攻击,通过消耗服务器系统资源来达到攻击效果;3、对应用层的攻击,例如:HTTP洪水、CC攻击、DNS攻击等应用层攻击。具体...
    99+
    2024-04-02
  • PYTHON中对列表以及字典的处理小技巧有哪些
    PYTHON中对列表以及字典的处理小技巧有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。#if 语句在行内print "Hello&quo...
    99+
    2023-06-04
  • pel数组中可以存储哪些数据类型的元素
    pel数组可以存储以下不同类型的元素: 整数(Integers):包括整数、长整数等各种整数类型。 浮点数(Floating-po...
    99+
    2024-04-17
    pel
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作