Python3 字典 | 菜鸟教程


本站和网页 https://www.runoob.com/python3/python3-dictionary.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Python3 字典 | 菜鸟教程
菜鸟教程 -- 学的不仅是技术,更是梦想!
首页
HTML
CSS
JavaScript
Vue
Bootstrap
NodeJS
Python3
Python2
Java
C++
C#
Go
SQL
Linux
jQuery
本地书签
首页
HTML
CSS
JS
本地书签
Search
Python3 教程
Python2 教程
Vue3 教程
vue2 教程
Bootstrap3 教程
Bootstrap4 教程
Bootstrap5 教程
Bootstrap2 教程
Python 3 教程
Python3 教程
Python3 简介
Python3 环境搭建
Python3 VScode
Python3 基础语法
Python3 基本数据类型
Python3 数据类型转换
Python3 解释器
Python3 注释
Python3 运算符
Python3 数字(Number)
Python3 字符串
Python3 列表
Python3 元组
Python3 字典
Python3 集合
Python3 条件控制
Python3 循环语句
Python3 编程第一步
Python3 推导式
Python3 迭代器与生成器
Python3 函数
Python3 数据结构
Python3 模块
Python3 输入和输出
Python3 File
Python3 OS
Python3 错误和异常
Python3 面向对象
Python3 命名空间/作用域
Python3 标准库概览
Python3 实例
Python 测验
Python3 高级教程
Python3 正则表达式
Python3 CGI编程
Python3 MySQL(mysql-connector)
Python3 MySQL(PyMySQL)
Python3 网络编程
Python3 SMTP发送邮件
Python3 多线程
Python3 XML 解析
Python3 JSON
Python3 日期和时间
Python3 内置函数
Python3 MongoDB
Python3 urllib
Python uWSGI 安装配置
Python3 pip
Python3 operator
Python math
Python requests
Python random
Python 有用的资源
Python AI 绘画
Python statistics
Python3 元组
Python3 字典 clear()方法
Python3 字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
一个简单的字典实例:
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
也可如此创建字典:
tinydict1 = { 'abc': 456 }
tinydict2 = { 'abc': 123, 98.6: 37 }
创建空字典
使用大括号 { } 创建空字典:
实例
# 使用大括号 {} 来创建空字典
emptyDict = {}
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:", len(emptyDict))
# 查看类型
print(type(emptyDict))
以上实例输出结果:
{}
Length: 0
<class 'dict'>
使用内建函数 dict() 创建字典:
实例
emptyDict = dict&#40;&#41;
# 打印字典
print&#40;emptyDict&#41;
# 查看字典的数量
print&#40;"Length:",len&#40;emptyDict&#41;&#41;
# 查看类型
print&#40;type&#40;emptyDict&#41;&#41;
以上实例输出结果:
{}
Length: 0
<class 'dict'>
访问字典里的值
把相应的键放入到方括号中,如下实例:
实例
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])
以上实例输出结果:
tinydict['Name']: Runoob
tinydict['Age']: 7
如果用字典里没有的键访问数据,会输出错误如下:
实例
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Alice']: ", tinydict['Alice'])
以上实例输出结果:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print ("tinydict['Alice']: ", tinydict['Alice'])
KeyError: 'Alice'
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
实例
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新 Age
tinydict['School'] = "菜鸟教程" # 添加信息
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
以上实例输出结果:
tinydict['Age']: 8
tinydict['School']: 菜鸟教程
删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显式删除一个字典用del命令,如下实例:
实例
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del tinydict['Name'] # 删除键 'Name'
tinydict.clear() # 清空字典
del tinydict # 删除字典
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
但这会引发一个异常,因为用执行 del 操作后字典不再存在:
Traceback (most recent call last):
File "/runoob-test/test.py", line 9, in <module>
print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined
注:del() 方法后面也会讨论。
字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
实例
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
print ("tinydict['Name']: ", tinydict['Name'])
以上实例输出结果:
tinydict['Name']: 小菜鸟
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:
实例
#!/usr/bin/python3
tinydict = {['Name']: 'Runoob', 'Age': 7}
print ("tinydict['Name']: ", tinydict['Name'])
以上实例输出结果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
tinydict = {['Name']: 'Runoob', 'Age': 7}
TypeError: unhashable type: 'list'
字典内置函数&方法
Python字典包含了以下内置函数:
序号函数及描述实例
1len(dict)计算字典元素个数,即键的总数。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> len(tinydict)
2str(dict)输出字典,可以打印的字符串表示。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> str(tinydict)
"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
3type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。
>>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> type(tinydict)
<class 'dict'>
Python字典包含了以下内置方法:
序号函数及描述
1dict.clear()删除字典内所有元素
2dict.copy()返回一个字典的浅复制
3dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值
5key in dict如果键在字典dict里返回true,否则返回false
6dict.items()以列表返回一个视图对象
7dict.keys()返回一个视图对象
8dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9dict.update(dict2)把字典dict2的键/值对更新到dict里
10dict.values()返回一个视图对象
11pop(key[,default])删除字典 key(键)所对应的值,返回被删除的值。
12 popitem()返回并删除字典中的最后一对键和值。
x = True
country_counter = {}
def addone(country):
if country in country_counter:
country_counter[country] += 1
else:
country_counter[country] = 1
addone('China')
addone('Japan')
addone('china')
print(len(country_counter))
confusion = {}
confusion[1] = 1
confusion['1'] = 2
confusion[1] += 1
sum = 0
for k in confusion:
sum += confusion[k]
print(sum)
课后练习
Python3 元组
Python3 字典 clear()方法
13 篇笔记
写笔记
#0 hellowqp wqp***a@foxmail.com 84字典的键值是"只读"的,所以不能对键和值分别进行初始化,即以下定义是错的:
>>> dic = {}
>>> dic.keys = (1,2,3,4,5,6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object attribute 'keys' is read-only
>>> dic.values = ("a","b","c","d","e","f")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object attribute 'values' is read-only
>>>
hellowqp hellowqp wqp***a@foxmail.com6年前 (2017-07-10)
#0 hackmeng 715***8@qq.com 298字典是支持无限极嵌套的,如下面代码:
cities={
'北京':{
'朝阳':['国贸','CBD','天阶','我爱我家','链接地产'],
'海淀':['圆明园','苏州街','中关村','北京大学'],
'昌平':['沙河','南口','小汤山',],
'怀柔':['桃花','梅花','大山'],
'密云':['密云A','密云B','密云C']
},
'河北':{
'石家庄':['石家庄A','石家庄B','石家庄C','石家庄D','石家庄E'],
'张家口':['张家口A','张家口B','张家口C'],
'承德':['承德A','承德B','承德C','承德D']
可以使用如下方法进行列出
for i in cities['北京']:
print(i)
将列出如下结果:
朝阳
海淀
昌平
怀柔
密云
for i in cities['北京']['海淀']:
print(i)
输出如下结果:
圆明园
苏州街
中关村
北京大学hackmeng hackmeng 715***8@qq.com6年前 (2017-09-13)
#0 匿名 123***789@qq.com 123用字典记录学生名字和分数,再分级:
#!/usr/bin/python3
students= {}
write = 1
while write :
name = str(input('输入名字:'))
grade = int(input('输入分数:'))
students[str(name)] = grade
write= int(input('继续输入?\n 1/继续 0/退出'))
print('name rate'.center(20,'-'))
for key,value in students.items():
if value >= 90:
print('%s %s A'.center(20,'-')%(key,value))
elif 89 > value >= 60 :
print('%s %s B'.center(20,'-')%(key,value))
else:
print('%s %s C'.center(20,'-')%(key,value))
测试输出结果:
输入名字:a
输入分数:98
继续输入?
1/继续 0/退出1
输入名字:b
输入分数:23
继续输入?
1/继续 0/退出0
-----name rate-----
------a 98 A------
------b 23 C------匿名 匿名 123***789@qq.com5年前 (2018-06-13)
#0 刀疤007 809***785@qq.com 137字典可以通过以下方法调换 key和 value,当然要注意原始 value 的类型,必须是不可变类型:
dic = {
'a': 1,
'b': 2,
'c': 3,
reverse = {v: k for k, v in dic.items()}
print(dic)
print(reverse)
输出如下:
{'a': 1, 'b': 2, 'c': 3}
{1: 'a', 2: 'b', 3: 'c'}刀疤007 刀疤007 809***785@qq.com5年前 (2018-06-20)
#0 小白学python 179***943@qq.com 55循环显示字典 key 与 value 值:
b= {'a':'runoob','b':'google'}
for i in b.values():
print(i)
for c in b.keys():
print(c)
执行输出结果为:
runoob
google
小白学python 小白学python 179***943@qq.com5年前 (2018-07-02)
#0 我要搞学习 li_***ia@126.com 55字典字段的比较
获取字典中最大的值及其键:
prices = {
'A':123,
'B':450.1,
'C':12,
'E':444,
max_prices = max(zip(prices.values(), prices.keys()))
print(max_prices) # (450.1, 'B')我要搞学习 我要搞学习 li_***ia@126.com5年前 (2018-07-18)
#0 david wang imf***fly@163.com 参考地址 66Python3.x 中会碰到这样的问题:
>>> sites_link = {'runoog':'runoob.com', 'google':'google.com'}
>>> sides = sites_link.keys()
>>> print(sides[0])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object does not support indexing
>>>
原因说明及解决方法:
dict.values()
dict.keys()
在 python2.x dict.keys 返回一个列表,但是在在 Python 3.x 下,dict.keys 返回的是 dict_keys 对象,若需要转换为列表,请使用:
list(dict.values())
list(dict.keys())
修改上面实例:
>>> sites_link = {'runoog':'runoob.com', 'google':'google.com'}
>>> sides = sites_link.keys()
>>> list(sides)
['runoog', 'google']
>>>david wang david wang imf***fly@163.com 参考地址5年前 (2018-07-24)
#0 hichcock hic***ck_tian@hotmail.com 92通过 values 取到 key 的方法:
>>> dic={"a":1,"b":2,"c":3}
>>> list(dic.keys())[list(dic.values()).index(1)]
'a'hichcock hichcock hic***ck_tian@hotmail.com5年前 (2018-09-08)
#0 nicergj nic***j@163.com 43字典列表,即在列表中嵌套字典:
dict_0 = {'color': 'green', 'points': 5}
dict_1 = {'color': 'yellow', 'points': 10}
dict_2 = {'color': 'red', 'points': 15}
lists = [dict_0, dict_1, dict_2]
for dict in lists:
print(dict)
输出:
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}nicergj nicergj nic***j@163.com5年前 (2018-10-21)
#0 blning 165***9299@qq.com 64字典推导式:
格式:{key:value for variable in iterable [if expression]}
执行步骤:
1、for 循环:遍历可迭代对象,将其值赋给变量。
2、if 语句:筛选满足 if 条件的结果。
3、存储结构:以键值对的方式存储在字典中。
blning blning 165***9299@qq.com4年前 (2019-11-20)
#0 蓝胖好肥 wuw***yself@qq.com 48dict.fromkeys() 存在一个坑:
例如:
l = [1,2,3]
d = {}.fromkeys(l , [])
这样得到的 d 是:{1:[] , 2:[] , 3:[]}
其实这三个列表的地址是一样的,修改任意一个列表的值会导致所有列表的值都发生改变。
可以使用这种方法来解决:
d = {key : [] for key in l}蓝胖好肥 蓝胖好肥 wuw***yself@qq.com3年前 (2020-08-08)
#0 nn讷豆tt kuz***63.com 8楼上下面的方法仍然有同样的问题,即修改任意一个列表的值会导致所有列表的值都发生改变。
d = {key : [] for key in l}
用下面的办法可以解决嵌套字典的如上问题:
l = [1,2,3]
j = ['a', 'b', 'c']
k = ['x', 'y', 'z']
d = {key : [] for key in l}
d = {key : d.copy() for key in j}
d = {key : d.copy() for key in k}
nn讷豆tt nn讷豆tt kuz***63.com1年前 (2022-07-08)
#0 悠竹 692***866@qq.com 5字典实现分支需求:
def status(code):
status = {
400:"print('Bad request')",
404:"print('Not found')"
return eval(status [code])
status(400)
输出:
Bad request悠竹 悠竹 692***866@qq.com9个月前 (12-01)
点我分享笔记
取消
分享笔记
昵称昵称 (必填)
邮箱邮箱 (必填)
引用地址引用地址
分类导航
HTML / CSSHTML 教程HTML5 教程CSS 教程CSS3 教程Bootstrap3 教程Bootstrap4 教程Bootstrap5 教程Font Awesome 教程Foundation 教程 JavaScriptJavaScript 教程HTML DOM 教程jQuery 教程AngularJS 教程AngularJS2 教程Vue.js 教程Vue3 教程React 教程TypeScript 教程jQuery UI 教程jQuery EasyUI 教程Node.js 教程AJAX 教程JSON 教程Echarts 教程Chart.js 教程Highcharts 教程Google 地图 教程 服务端Python 教程Python2.x 教程Linux 教程Docker 教程Ruby 教程Java 教程C 教程C++ 教程Perl 教程Servlet 教程JSP 教程Lua 教程Rust 教程Scala 教程Go 教程PHP 教程数据结构与算法Django 教程Zookeeper 教程设计模式正则表达式Maven 教程Verilog 教程ASP 教程AppML 教程VBScript 教程 数据库SQL 教程MySQL 教程PostgreSQL 教程SQLite 教程MongoDB 教程Redis 教程Memcached 教程 数据分析Python 教程NumPy 教程Pandas 教程Matplotlib 教程Scipy 教程R 教程Julia 教程 移动端Android 教程Swift 教程jQuery Mobile 教程ionic 教程Kotlin 教程 XML 教程XML 教程DTD 教程XML DOM 教程XSLT 教程XPath 教程XQuery 教程XLink 教程XPointer 教程XML Schema 教程XSL-FO 教程SVG 教程 ASP.NETASP.NET 教程C# 教程Web Pages 教程Razor 教程MVC 教程Web Forms 教程 Web ServiceWeb Service 教程WSDL 教程SOAP 教程RSS 教程RDF 教程 开发工具Eclipse 教程Git 教程Svn 教程Markdown 教程 网站建设HTTP 教程网站建设指南浏览器信息网站主机教程TCP/IP 教程W3C 教程网站品质
Advertisement
反馈/建议
在线实例
&middot;HTML 实例
&middot;CSS 实例
&middot;JavaScript 实例
&middot;Ajax 实例
&middot;jQuery 实例
&middot;XML 实例
&middot;Java 实例
字符集&工具
&middot; HTML 字符集设置
&middot; HTML ASCII 字符集
&middot; JS 混淆/加密
&middot; PNG/JPEG 图片压缩
&middot; HTML 拾色器
&middot; JSON 格式化工具
&middot; 随机数生成器
最新更新
&middot;
正则表达式 &#82...
&middot;
CSS element.cla...
&middot;
正则表达式 &#82...
&middot;
C 语言静态数组...
&middot;
Edge 浏览器
&middot;
JavaScript 模板...
&middot;
Python statisti...
站点信息
&middot;
意见反馈
&middot;
免责声明
&middot;
关于我们
&middot;
文章归档
关注微信
Copyright 2013-2023 菜鸟教程
runoob.com All Rights Reserved. 备案号:闽ICP备15012807号-1
微信关注