python字典的键

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

不允许一个键对应多个值

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

键必须是可哈希的

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

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

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

python中字典的键必须是可以哈希的对象相关推荐

  1. python英语字典程序修改_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  2. python字典修改键所对应值_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  3. 如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  4. python中字典的键是唯一的吗_python 零散记录(四) 强调字典中的键值唯一性 字典的一些常用方法...

    dict中键只有在值和类型完全相同的时候才视为一个键: mydict = {1:1,'':1} #此时mydict[1] 与 mydict['1']是两个不同的键值 dict的一些常用方法: clea ...

  5. python中字典添加键对_关于python:如何向字典添加键、值对?

    本问题已经有最佳答案,请猛点这里访问. 如何在字典中添加键.值对?.下面我提到了以下格式? {'1_somemessage': [[3L, 1L, u'AAA', 1689544L, datetime ...

  6. python中字典的键是唯一的吗_在python3中反转字典中的键和值(值不唯一)

    我知道当值是唯一的时,如何简单地在字典中反转键和值. 但是当值不唯一时如何反转. 根据要求,如果值出现不止一次,我需要使用set来将它们组合在一起. 防爆.输入d = {'a':1,'b':2,'c' ...

  7. python中字典的键是唯一的吗_Python怎么通过字典的键和值做一个登录程序?

    杨魅力 LZ,登陆功能有两个子功能:注册与登陆,,初学版如下:dic = {}a = raw_input("Please input your name...")b = raw_i ...

  8. python中字典按键或键值排序

    字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排 ...

  9. python中字典按键或键值排序_[宜配屋]听图阁

    字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排 ...

最新文章

  1. [译]以PostgreSQL为例,谈join计算的代价
  2. poj3070 Fibonacci 矩阵快速幂
  3. SpringBoot实战 之 异常处理篇
  4. MFC中树形控件的应用——电话簿
  5. HTMLCSSJavaScript个人入门自学笔记
  6. C++之继承探究(六):虚函数和多态
  7. 怎么用计算机输出手机的密码,手机连接wifi后怎么看密码?手机连接wifi后看密码的方法-太平洋IT百科...
  8. linux hotplug 机制,佐须之男的博客- 跟着佐大学Lede/OpenWrt开发入门培训班讲义-18 OpenWrt hotplug 机制分析...
  9. ROC曲线的绘制过程/AUC/TPR、FPR、敏感度和特异度
  10. Andorid 方法数超过64K的问题
  11. Nginx禁止使用IP访问
  12. 用word2vec解读延禧攻略人物关系
  13. 近期共享打印机出现打印或联机错误代码为0x0000000b11故障的处理方法
  14. 厘米与像素的单位转换
  15. 快排 找第k大的数字
  16. 一文读懂机器学习,大数据/自然语言处理/算法全有了……
  17. maven的下载与配置,还有maven的使用逻辑
  18. JavaScript风格指南
  19. 武汉理工大学计算机学院转专业细则,武汉理工大学转专业
  20. 齿轮与减速器输出端连接方式

热门文章

  1. 【Spring MVC】文件上传、文件下载
  2. java,获取微信分享需要的获取 signature、jsapi_ticket和access_token
  3. AtomicLong和LongAdder的区别
  4. JavaScript的运动 —— 缓冲运动及其应用篇
  5. 【手把手教学】基于Maven构建方式使用Mybatis generator自动生成
  6. 一看就会——蓝桥杯 试题 基础练习 完美的代价——贪心法,21行代码AC
  7. mysql 定时器停止_mysql事件【定时器】
  8. 爬取豆瓣TOP250并将数据保存为txt文件和csv文件并存入MySQL数据库
  9. 常见web漏洞验证攻略(萌新入坑必备!)
  10. datatable 创建列赋值_Datatable 添加新列并赋值