元组不可以在字典中作为键来使用,列表则可以,对吗?
发布网友
发布时间: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知识,欢迎来老男孩教育试听~...