广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python字典详解
  • 775
分享到

python字典详解

字典详解python 2023-01-31 07:01:05 775人浏览 安东尼

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

摘要

字典是python中唯一的內建的映射类型,可以存储任意对象的容器,比如:字符串,列表,元组,自定义对象等;字典由键(key)与值(value)组成,基本语法如下: {key:value, ... ...}字典中每个Key是唯一的,key必

字典是python中唯一的內建的映射类型,可以存储任意对象的容器,比如:字符串,列表,元组,自定义对象等;字典由键(key)与值(value)组成,基本语法如下:

{key:value, ... ...}
字典中每个Key是唯一的,key必须是可哈希(后面我们介绍);

这节我们来看下字典基本知识点:

1>字典定义、遍历、修改;
2>理解字典key;
4>字典相关函数;

1.字典定义与访问

1.1 直接定义字典:

stocks = {'000001':'平安银行', '000002':'万科A', '000025':'特力A'}
#000001,000002,000025为key;对应的平安银行,万科A,特力A为value

1.2 使用dict方法:

dict是Python的字典类,可以使用字典相关方法定义字典,具体如下:

#列表或者元组中每个元素必须为列表或者元组且长度为2
phoneprice = [['小米8青春版',1699], ['华为P20',3188], ['VIVOX23', '2798']]
pdict = dict(phoneprice)
print(pdict)

1.3 使用fromkeys方法:

方法:dict.fromkeys(iterable, value=None),说明:

1>将可迭代对象转成字典,字典key为迭代对象每个元素,值为value;
2>iterable必须为可迭代对象,value默认值为None

具体操作如下:

#字符串
kstr = 'abcd'
dstr = dict.fromkeys(kstr, 1)
print('dstr:',dstr)
#列表:
klist = ['python','java','c++']
dlist = dict.fromkeys(klist, 0)
print(dlist)

这些就是字典初始化常用的方式。

1.4 字典访问:

1)使用key获取值:

stocks = {'000001':'平安银行', '000002':'万科A', '000025':'特力A'}
#通过key访问对应value
print(stocks['000002'])
print("stocks[{}]:{}".fORMat('000002', stocks['000002']))

输出结果:

万科A
stocks[000002]:万科A

2)遍历字典:
通过for循环可以获取字典所有key,具体如下:

stocks = {'000001':'平安银行', '000002':'万科A', '000025':'特力A'}
#遍历为字典所有key
for key in stocks:
    print(key)

输出结果:

000001
000002
000025

可以通过Key获取对应的Value:

stocks = {'000001':'平安银行', '000002':'万科A', '000025':'特力A'}
#获取为字典所有key
for key in stocks:
    print(key, stocks[key])

输出结果:

000001 平安银行
000002 万科A
000025 特力A

1.5 字典修改:

1)直接修改:

#用户名密码
userinfo = {'uname':'admin', 'pwd':'admin123'}
print(userinfo)
#修改密码
userinfo['pwd'] = 'abcd1234'
print(userinfo)

输出结果:

{'uname': 'admin', 'pwd': 'admin123'}
{'uname': 'admin', 'pwd': 'abcd1234'}

2)添加值:

#用户名密码
userinfo = {'uname':'admin', 'pwd':'admin123'}
print(userinfo)
#添加手机号
userinfo['phonenum'] = '15022332233'
print(userinfo)

输出结果:

{'uname': 'admin', 'pwd': 'admin123'}
{'uname': 'admin', 'pwd': 'admin123', 'phonenum': '15022332233'}

2 字典Key

1)字典key是唯一的:

#result中有两个first
result = {'first':'zhang','Second':'sun', 'first':'li'}
#first对应值?
print(result['first'])

输出结果:li,字典中每个key是唯一的,但是value可以相同;

2)字典key必须是不可改变对象:
我们怎么来理解key不可改变?数字,字符串,元组都是不可改变对象,他们可以为key,换一个列表试试:

info = {}
info[[1,2,3]] = 1

输出结果:

<ipython-input-36-9ce2e27f396d> in <module>
      1 info = {}
----> 2 info[[1,2,3]] = 1

TypeError: unhashable type: 'list'

触发异常,因为列表是不可hash对象。
所以更好说的说法应该是字典key必须是可以hash对象。不可变的对象才能被hash。
我们可以直接使用hash这个函数看下处理结果:

print(hash('a'))
print(hash(1))
print(hash((1,2,3)))

输出结果:

-99564674986098144
1
2528502973977326415

不同对象的hash值都是唯一的,且hash对象必须是不可改变的。

3)字典key为什么要hash?
字典添加访问过程可以简单理解为下图(内部实现可能更加复杂):
python字典详解
根据这个简单示意图我们知道key必须可以hash的原因,字典这种实现方式能够很快的找到查找元素。
所以字典的key必须是不可改变的。

4)考验下,我们是否真的理解了?

info = {1:'one', 1.0:'frist'}
info

字典info是什么值,大家可以在评论区写出结果。

3.字典常用操作:

1)in:判断key是否在字典中;
抖音上找了几个作品,我们来判断下:

songs= {'虎二':'不仅仅是喜欢', '摩登兄弟':'走马', '西瓜妹':'花桥流水','M哥':'我的将军啊'}
print('面筋哥' in songs)
print('M哥' in songs)

输出结果:False,True

2)len:获取字典长度;

songs= {'虎二':'不仅仅是喜欢', '摩登兄弟':'走马', '西瓜妹':'花桥流水','M哥':'我的将军啊'}
print(len(songs))

输出结果:4
3)del:删除元素;

songs= {'虎二':'不仅仅是喜欢', '摩登兄弟':'走马', '西瓜妹':'花桥流水','M哥':'我的将军啊'}
#删除key为虎二的元素
del songs['虎二']
print(songs)

输出结果:{'摩登兄弟': '走马', '西瓜妹': '花桥流水', 'M哥': '我的将军啊'}

4.字典常用方法详解:

4.1.获取字典key与元素:

主要方法如下:

方法 说明
D.keys() 获取字典所有ley
D.values() 获取字典所有value
D.items() 获取字典所有item

相关操作如下:

songinfo = {'虎二':'不仅仅是喜欢', '摩登兄弟':'走马', '西瓜妹':'花桥流水','M哥':'我的将军啊'}
songer = songinfo.keys()
print(songer)
songs = songinfo.values()
print(songs)
items = songinfo.items()
print(items)

```输出结果:
dict_keys(['虎二', '摩登兄弟', '西瓜妹', 'M哥'])
dict_values(['不仅仅是喜欢', '走马', '花桥流水', '我的将军啊'])
dict_items([('虎二', '不仅仅是喜欢'), ('摩登兄弟', '走马'), ('西瓜妹', '花桥流水'), ('M哥', '我的将军啊')])

遍历字典几种方式:
```Python
songinfo= {'虎二':'不仅仅是喜欢', '摩登兄弟':'走马', '西瓜妹':'花桥流水','M哥':'我的将军啊'}
#获取keys,然后遍历
#与for key in songs类似
ks = songinfo.keys()
for k in ks:
    print(k, songinfo[k])
print('======')
#获取字典所有items,然后遍历
for key, value in songinfo.items():
    print(key, value)

输出结果:

虎二 不仅仅是喜欢
摩登兄弟 走马
西瓜妹 花桥流水
M哥 我的将军啊
======
虎二 不仅仅是喜欢
摩登兄弟 走马
西瓜妹 花桥流水
M哥 我的将军啊

4.2 获取Key对应value

方法 说明
D.get(k[,d]) 如果k在D中存在,返回D[k],否则返回d,d默认值为None
D.setdefault(k[,d]) 如果k在D中存在,返回D[k],否则D[k]=d

具体操作如下:

userinfo= {'uname':'lucy', 'pwd':'aabbcc'}
print(userinfo)
#获取用户名
print('{}:{}'.format('uname',userinfo.get('uname')))
#获取用户年龄
print('{}:{}'.format('age',userinfo.get('age')))
#如果密码不存在,设置默认密码,否则返回存在密码
print('{}:{}'.format('pwd',userinfo.setdefault('pwd', '123456')))
#如果用户年龄不存在,设置默认值
print('{}:{}'.format('age',userinfo.setdefault('age', 1)))
#设置之后,查看字典内容:
print(userinfo)

输出结果:

{'uname': 'lucy', 'pwd': 'aabbcc'}
uname:lucy
age:None
pwd:aabbcc
age:1
{'uname': 'lucy', 'pwd': 'aabbcc', 'age': 1}

4.3 字典删除

方法 说明
D.pop(k[,d]) 详细解释看表格下方
D.popitem() 删除并返回一对key-value,字典为空报错
D.clear() 删除字典所有元素

D.pop(k[,d]) 详解:

1>k为删除键,d为给定返回值;
2>若k存在,删除k并返回k对应value;
3>若k不存在,且d有值,返回d;
4>若k不存在,且没有给定d,触发异常;

1)使用pop删除:

#数字货币价格:瑞波币,以太坊,比特币
BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
print(BiPrice)
#删除瑞波币
print('XRP price:',BiPrice.pop('XRP'))
#删除后结果:
print('删除后结果:', BiPrice)
#删除EOS,如果不存在,返回2$
print('EOS price:',BiPrice.pop('EOS', '$2'))

输出结果:

{'XRP': '$0.36557', 'ETH': '$113.60', 'BTC': '$ 4031.6'}
XRP price: $0.36557
删除后结果: {'ETH': '$113.60', 'BTC': '$ 4031.6'}
EOS price: $2

删除不存在key:

#数字货币价格:瑞波币,以太坊,比特币
BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
BiPrice.pop('BCH')

运行结果:

KeyError                                  Traceback (most recent call last)
<ipython-input-77-2507cf08400a> in <module>
      1 #数字货币价格:瑞波币,以太坊,比特币
      2 BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
----> 3 BiPrice.pop('BCH')

KeyError: 'BCH'

删除不存在元素,报错。
2)使用popitem删除:

#数字货币价格:瑞波币,以太坊,比特币
BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
print(BiPrice)
print('popitem:',BiPrice.popitem())
print('删除后结果:', BiPrice)

输出结果:

{'XRP': '$0.36557', 'ETH': '$113.60', 'BTC': '$ 4031.6'}
popitem: ('BTC', '$ 4031.6')
删除后结果: {'XRP': '$0.36557', 'ETH': '$113.60'}

3)使用clear清空字典:

BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
print(BiPrice)
BiPrice.clear()
print('clear后结果:', BiPrice)

运行结果:

{'XRP': '$0.36557', 'ETH': '$113.60', 'BTC': '$ 4031.6'}
clear后结果: {}

4.4 字典更新方法:

方法 说明
D.update([E, ]**F) 更新字典 ,E为Key-value可迭代对象或者字典

我们来分析这个方法:

1>如果E为字典,for k in E: D[k] = E[k];
2>如果E为可迭代对象,for k, v in E: D[k] = v;
3>如果**F,for k in F: D[k] = F[k];(**F为可变长关键字参数))

相关操作如下:

#一局王者荣耀5V5,某方英雄选择最开始两个:
heros = {'白起':'上路','嬴政':'中路'}
#添加射手:
heros.update({'刘备':'射手'})
print('增加刘备:',heros)
#添加夏侯惇与鬼谷子
heros.update([('夏侯惇', '上路'), ('鬼谷子', '辅助')])
print('增加两个:', heros)
#更改夏侯惇分路
heros.update([('夏侯惇', '打野')])
print('更改属性:', heros)

输出结果:

增加刘备: {'白起': '上路', '嬴政': '中路', '刘备': '射手'}
增加两个: {'白起': '上路', '嬴政': '中路', '刘备': '射手', '夏侯惇': '上路', '鬼谷子': '辅助'}
更改属性: {'白起': '上路', '嬴政': '中路', '刘备': '射手', '夏侯惇': '打野', '鬼谷子': '辅助'}

到这里我们对字典就有了基本认识,可以使用字典来解决工作和学习中的问题。

--结束END--

本文标题: python字典详解

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

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

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

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

下载Word文档
猜你喜欢
  • python字典详解
    字典是Python中唯一的內建的映射类型,可以存储任意对象的容器,比如:字符串,列表,元组,自定义对象等;字典由键(key)与值(value)组成,基本语法如下: {key:value, ... ...}字典中每个Key是唯一的,key必...
    99+
    2023-01-31
    字典 详解 python
  • Python 字典详解
    目录什么是字典?创建字典1. 直接赋值2. 使用 dict()函数创建空字典3. 获取字典元素4. 唯一的键,如果字典中有俩个或多个相同的键,默认取最后一个小结:字典的增字典的改&n...
    99+
    2022-11-12
  • 详解Python合并字典
    目录实例 1 : 使用 update() 方法,第二个参数合并第一个参数实例 2 : 使用 **,函数将参数以字典的形式导入总结给定一个字典,然后计算它们所有数字值的和。 实例 1 ...
    99+
    2022-11-12
  • Python 中字典dict详解
    一、字典(dict)概念 字典是另一种可变容器模型,且可存储任意类型对象如字符串、数字、元组等其他容器模型,因为字典是无序的所以不支持索引和切片。 二、字典(dict)的定义 一般格式: 字典的每个键...
    99+
    2023-09-01
    python 开发语言
  • 详解Python字典的运算
    目录问题描述解决方案讨论总结问题描述 怎样在数据字典中执行一些计算操作(比如求最值、排序等)? 解决方案 有如下字典: stocks = { 'ACME': 45.23,...
    99+
    2022-11-12
  • Python字典的详细讲解
    本篇内容介绍了“Python字典的详细讲解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、字典概述1. 字典的格式Python字典是一种可...
    99+
    2023-06-16
  • Python 字典 get()函数使用详解,字典获取值
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 get函数使用...
    99+
    2023-10-20
    python 网络安全 人工智能 机器学习
  • Python字典使用技巧详解
    目录1. 引言2. 使用union操作合并字典3. 使用解包操作合并字典4. 使用字典生成式5. 字典中key-value互换6. 列表转为字典7. 字典按照value来排...
    99+
    2022-11-16
    Python字典用法 Python字典
  • python字典操作实例详解
    本文实例为大家分享了python字典操作实例的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import turtl...
    99+
    2022-06-04
    字典 详解 实例
  • python生成密码字典详解
    代码和代码运行的结果: 代码: import itertools as its words="rot123" a=its.product(words,repeat=4) name...
    99+
    2022-11-12
  • python列表,元祖,字典详解
    列表:    基础数据类型,可含有大量数据,可存储各种数据类型    1,索引切片    与字符串一样    2,增删改查,以及其他操作        增        append 追加          insert  列表.inser...
    99+
    2023-01-31
    元祖 字典 详解
  • 详解Python字典查找性能
    目录timeit.repeat字典获取性能数据准备复杂获取总结timeit.repeat timeit.repeat默认会执行3轮,每轮执行1000000次。返回每轮的总执行时间列表...
    99+
    2022-11-12
  • 关于Python字典(Dictionary)操作详解
    目录一、创建字典二、访问字典里的值三、修改字典四、删除字典元素五、字典键的特性六、字典内置函数&方法Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字...
    99+
    2023-05-15
    Python字典 Python Dictionary
  • Python四大金刚之字典详解
    目录引言一、字典的创建二、字典元素的操作(一)获取(二)增删改三、获取字典的视图四、字典的遍历五、字典的特点六、字典生成式总结引言一、字典的创建二、字典元素的操作(一)获取(二)增删...
    99+
    2022-11-12
  • python--字典(dict)和集合(set)详解
    目录一、集合1.集合定义2.创建集合3.去重4.集合增删5.关系运算6.排序7.frozenset8.练习9.特性二、字典1.字典定义2.字典打印3.字典元素删除4.setdefau...
    99+
    2022-11-12
  • Python数据类型详解(四)字典:dict
    一.基本数据类型   整数:int   字符串:str(注:t等于一个tab键)   布尔值: bool   列表:list   列表用[]   元祖:tuple   元祖用()   字典:dict 注...
    99+
    2022-06-04
    字典 详解 数据类型
  • Python字典简介以及用法详解
    #!/usr/bin/env python # -*- coding:utf-8 -*- """ 老规矩以下方法环境2.7.x,请3.x以上版本的朋友记得格式print(输出内容放入括号内) 字典的...
    99+
    2022-06-04
    字典 详解 简介
  • 详解python的字典及相关操作
    目录什么是字典创建一个字典在原有字典上添加“键-值”对修改字典中的值删除键-值对由类似对象组成的字典遍历字典什么是字典 字典是Python中最强大的数据类型之...
    99+
    2022-11-10
  • Python字典中items()函数案例详解
    Python3:字典中的items()函数 一、Python2.x中items():   和之前一样,本渣渣先贴出来python中help的帮助信息: &...
    99+
    2022-11-12
  • Python必备技巧之字典(Dictionary)详解
    目录定义字典字典的访问字典键与列表索引增量构建字典字典键的限制字典值的限制运算符和内置函数内置字典方法Python中的字典由于是对象的集合属于复合数据类型,类似于列表。 定义字典 ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作