问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

元组不可以在字典中作为键来使用,列表则可以,对吗?

发布网友 发布时间:2022-04-30 00:22

我来回答

2个回答

懂视网 时间:2022-05-10 08:19

python字典的键

字典中的值没有任何限制, 可以是任意Python对象,即从标准对象到用户自定义对象皆可,但是字典中的键是有类型限制的。

不允许一个键对应多个值

必须明确一条原则:每个键只能对应一个项。也就是说:一键对应多个值是不允许的(像列表、元组和其他字典这样的容器对象是可以的)。 当有键发生冲突(即字典键重复赋值),取最后(最近)的赋值。Python并不会因字典中的键存在冲突而产生一个错误,它不会检查键的冲突是因为如果真这样做的话,在每个键-值对赋值的时候都会做检查,这将会占用一定量的内存。

>>> dict1 = {'foo':789, 'foo': 'xyz'} 
>>> dict1 
{'foo': 'xyz'} 
>>> dict1['foo'] = 123
>>> dict1 
{'foo': 123}

键必须是可哈希的

大多数Python对象可以作为键,但它们必须是可哈希的对象。像列表和字典这样的可变类型,由于它们不是可哈希的,所以不能作为键。 所有不可变的类型都是可哈希的,因此它们都可以做为字典的键。要说明的是:值相等的数字表示相同的键,即整型数字1和浮点数1.0的哈希值是相同的,它们是相同的键。

同时,也有一些可变对象(很少)是可哈希的,它们可以做字典的键,但很少见。举一个例子,一个实现了__hash__() 特殊方法的类。因为__hash__()方法返回一个整数,所以仍然是用不可变的值(做字典的键)。 为什么键必须是可哈希的?解释器调用哈希函数,根据字典中键的值来计算存储你的数据的位置。如果键是可变对象,它的值可改变。如果键发生变化,哈希函数会映射到不同的地址来存储数据。如果这样的情况发生,哈希函数就不可能可靠地存储或获取相关的数据。选择可哈希的键的原因就是因为它们的值不能改变。

例如

d = {('a','b'):(3,7)}

上述例子,就是把元组当作字典的键,可以看到没有报错,说明元组充当字典的键也是可以的。

数字和字符串可以被用做字典的键,元组是不可变的但也可能不是一成不变的,因此用元组做有效的键必须要加限制:若元组中只包括像数字和字符串这样的不可变参数,才可以作为字典中有效的键。

热心网友 时间:2022-05-10 05:27

不对。

恰恰相反,元组可以在字典中作为键来使用,而列表不可以。

一种类型的对象可以作为字典的键来使用的前提是:这种类型是可以哈希的。

下面是一个例子:

下面是运行结果截图:

列表可以作为字典的键吗

字典的键需要是不可变类型,因此列表不能作为字典的键。列表是可变的,可以通过索引来修改其元素,这违反了字典键的不可变性要求。相比之下,元组是不可变的,但其内部可以是列表,这种情况下,如果元组内部的列表发生改变,元组本身也会被视为改变,因此通常也不将包含列表的元组作为字典的键。不可变类型...

列表可以作为字典的键吗

列表不可以作为字典的键。字典的键是需要不可变类型的,列表是可变的,列表可以通过索引赋值,所以不能作为字典的键,元组最有意思,元组是不可变但有是可变的,之所以这么说,是因为元组不能像列表一样通过索引赋值,但是如果组成元组的是多个列表的话,列表可变,元组内列表变了,元组也就变了。含义 列...

python中列表和元组有哪些区别

3. 性能特点不同:由于元组是不可变的,所以在某些情况下,元组可能会比列表更有效率。比如在循环中,如果一个数据结构不需要被修改,使用元组可能会提供更好的性能。此外,元组可以作为字典中的键,但列表则不能。接下来进行 可变性方面:列表是Python中的动态数据结构,可以自由地添加、删除和修改元素。

列表,元组和字典的区别有哪些

- 字典的键必须是唯一的,而列表不能作为字典的键值。虽然列表不能作为字典的键,但元组可以。

Python列表,元组,集合,字典的区别和相互

2, [0, 2, 3, 5], 4)字典完全区别于列表和元组因为字典使用hash表来存储, 所以只有能够进行hash运算的才能作为键值 个人认为, 一般不可变的都能作为键, 比如str/tuple/None/function.列表不能作为键 最后, 由于字典是hash表算法{字典查找O(1), 列表遍历O(n)}, 在数据量巨大的时候, 字典的...

Python列表,元组,集合,字典的区别和相互转换

列表是一组值,其中的值可以改变 元组也是一组值,其中的值不能改变 列表与元组可以相互转换 集合是一组唯一的无顺序的值 字典是无固定顺序的键值对

python中列表和元组之间有什么区别?

然后,可以将其用作字典中的键来存储有关位置的注释。另一方面,列表可用于存储多个位置。自然地,人们可能想在列表中添加或删除位置,因此使列表可变是有意义的。另一方面,从现有位置添加或删除项目没有意义-因此,元组是不可变的。在某些情况下,可能想更改现有位置元组中的项目,例如在页面的各行中...

列表,元组和字典的区别有哪些

2. 元组(tuple)类似于列表,也是一种序列类型,但其主要区别在于元组的元素不可更改。一旦元组被创建,其中的元素就不能被添加、删除或修改。元组常用于那些一旦确定就不需要改变的数据场合。3. 字典(dict)是Python中的一个映射类型,它存储键值对。每个键值对由一个唯一的键(key)和一个对应的值...

元组可以作为字典的键吗

元组可以作为字典的键。

列表,元组和字典的区别有哪些

对象生成后,可以对其元素进行更改、添加、删除、清空、排序等操作。2、元组通常是由不同的数据组成,而列表是相同的数据队列 元组表示的是结构,而列表表示的是顺序,列表的权限远大于元组。3、列表不能作为字典的key值,而元组可以。字典的键是唯一的。想要学习Python知识,欢迎来老男孩教育试听~...

元组可以作为字典的键吗为什么 元组可以作为字典的键 为什么列表不能作为字典的键 列表能作为字典的键吗 字符串可以作为字典的键 集合可以作为字典的键吗 字典中的键可以是元组 python字典中的键可以重复吗 正在使用的用于标识元组的候选键
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
僵尸先生里的僵尸仔叫什么? 新僵尸先生中的僵尸是谁演的 ...电脑网速卡,我的手机一连接WIFI就会影响到电脑网速卡 有人拿手机连我家WIFI,如果我现在在电脑里玩游戏,会不会影响他玩手机... 我在听QQ音乐 但为什么我的QQ里没有显示我在听? QQ 音乐在设置显示的情况下,在QQ状态上不显示~ QQ音乐正在听时为什么在QQ上显示不出来 早安祝福语大全简短 早安祝福语大全简短暖心 早上好暖心问候(早安正能量祝福说说) 茶砖怎么弄开 茶砖怎么喝 《键来》txt下载在线阅读全文,求百度网盘云资源 键来什么意思? 关于oracle数据库中函数的概念,作用 干海参泡发水发变黄 秦安-KM-0104 4-端口 KM滑屏器,支持 USB 2.0共享(键鼠切换器)详细参数是什么? 有没有这样的USB切换器??? 胰腺炎应该吃什么药? 中国人寿鸿福至尊年金险怎么买划算?可靠吗? 国寿鸿福至尊年金保险分红型,,,,,每年交两万交十年存十年到期后能领多少钱 你好我想咨询国寿鸿福至尊年金保险(分红型)退费的事情,交了3年总交十年的,想退能退多少?_百度问一问 中国人寿鸿福至尊年金险有什么优缺点?怎么买划算? 中国人寿鸿福至尊年金险怎么样?值得买吗? 国寿鸿福至尊年金保险(分红型)怎么领钱 国寿鸿福至尊年金保险分红型10年一年交一万的保险可以领回本钱吗_百度问一问 鸿福至尊年金保险分红型 一带一路圆桌峰会都有哪些国家 胰腺炎吃什么中药会好,会根治? 胰腺炎吃什么消炎药止痛 一带一路一共有多少个国家 狗狗胰腺炎。吃什么药疗效好。 电脑忘记开机密码怎么重装系统? 电脑开机密码忘了怎么重装系统? 如何快速按键盘上的键来复制和粘贴,应该按什么键。 悬空寺最著名的景点是哪里? 电脑启动可按哪个键盘键来调出从哪个设备启动 LOL用A键来攻击和不用A键来攻击有什么区别啊? 电脑开机密码忘了能重装系统不 王者荣耀程咬金怎样出暴力装 电脑开机密码忘记怎么办,怎样登录系统 键盘上FN键要来干嘛,怎么用 AutoCAD如何用键盘的快捷键来替代鼠标的中键来滚动缩放图形,因为我是用手绘笔来画CAD的,不是用鼠标? 要打大写字母时,通过shift键或caps lock键来实现,两种方式有何区别,有何优缺点,分别适用什么场合? 怎么一按上键来开始菜单啊? 怎样多人用一个 近视的原因和危害性 近视眼是怎么形成的原因?近视有哪些危害呢? 悬空寺的景点 如何一个冋时多人使用? 患近视眼的原因与危害 蝴蝶兰在几点开花