Python学习笔记(二十) Python3字典

举报
菜鸟级攻城狮 发表于 2021/07/07 16:33:31 2021/07/07
【摘要】 史上最为详细的python学习笔记,记录学习过程的知识点和难点

Python3字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值  key=>value  对用冒号  :  分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号  {}  中 ,格式如下所示:

d = { key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。

若字典中出现相同的键,后面的键值对会覆盖前面的键值对。

python字典中,键是唯一的,hashable type,不支持直接修改,值可以任意更改。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

 

也可如此创建字典:

dict1 = { 'abc': 456 }

dict2 = { 'abc': 123, 98.6: 37 }

 

访问字典里的值

把相应的键放入到方括号中,如下实例:

实例

以上实例输出结果:

dict['Name']:  Runoob

dict['Age']:  7

如果用字典里没有的键访问数据,会输出错误如下:

实例

以上实例输出结果:

修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

实例

以上实例输出结果:

dict['Age']:  8

dict['School']:  教程

删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。

显示删除一个字典用del命令,如下实例:

实例

但这会引发一个异常,因为用执行 del 操作后字典不再存在:

注:del() 方法后面也会讨论。

字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

实例

以上实例输出结果:

dict['Name']:  小菜鸟

2)键必须不可变,所以可以用数字字符串或元组充当,而用列表(unhashable type)就不行,如下实例:

实例

以上实例输出结果:

Traceback (most recent call last):

  File "test.py", line 3, in <module>

dict = {['Name']: 'Runoob', 'Age': 7}

TypeError: unhashable type: 'list'

字典内置函数&方法

Python字典包含了以下内置函数:

序号

函数及描述

实例

1

len(dict)
计算字典元素个数,即键的总数。

>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

>>> len(dict)

3

2

str(dict)
输出字典,以可打印的字符串表示。

>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

>>> str(dict)

"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"

3

type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。

>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

>>> type(dict)

<class 'dict'>

Python字典包含了以下内置方法:

序号

函数及描述

1

dict.clear()
删除字典内所有元素

2

dict.copy()
返回一个字典的浅拷贝

python直接赋值、浅拷贝、深拷贝解析 ↓

https://www.cnblogs.com/wushuaishuai/p/7737865.html

https://www.cnblogs.com/wushuaishuai/p/7737917.html

https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html

3

dict.fromkeys(seq[, value])  # []中内容可有可无
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

4

dict.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值

5

key in dict

key not in dict
如果键在字典dict里返回true,否则返回false

6

dict.items()
以列表返回可遍历的(键, 值) 元组列表(数组)  # [(key, value), (key, value)]

7

dict.keys()
返回一个迭代器,可以使用 list() 来转换为列表

8

dict.setdefault(key, default=None)
和get()类似, 如果key在字典中,返回对应的值; 如果key不存在于字典中,将会添加key并将值设为default

9

dict.update(dict2)
把字典dict2的键/值对更新到dict里

10

dict.values()
返回一个迭代器,可以使用 list() 来转换为列表

11

href="https://www.runoob.com/python3/python3-att-dictionary-pop.html" dict.pop(key[,default])  # []中内容可有可无
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

12

dict.popitem()
随机返回并删除字典中的最后一对键和值。


'''
Python3字典
    字典是另一种可变容器模型,且可存储任意类型对象
    字典的每个键值对 key => value 用冒号":"分隔,每个对之间用逗号","分隔,整个字典包括在花括号"{}"中
    表示方式为:d = [key1 : value1, key2 : value2]
    
    键必须是唯一的,但值则不必
    键必须是不可变的,但值可以取任何数据类型,如字符串、数字
    键可以是字符串,也可以是整型数字
'''

# print("dict['Age'] = ", dict['Age'])
# print("dict['School'] = ", dict['School'])
# 删除字典后,再引用字典会报错:TypeError: 'type' object is not subscriptable


### 字典键的特性
# 字典值可以是任何python对象,既可以是标准的对象,也可以是用户自定义的对象,但键不行
# 两个重要的点需要记住:
# 1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

# 2、键必须不可变,可以使用数字、字符串、元组,但键不可以使用列表!

### Python字典包含了以下内置方法:
# 1、clear():
'''
描述:
    python字典clear()方法用于清空字典内所有元素
语法:
    dict.clear()
参数:
    NA
返回值:
    无
'''

### 直接赋值、copy()deepcopy()的区别

Python直接赋值、浅拷贝和深拷贝的解析,可将示例与图片结合分析。

'''
直接赋值:其实就是对象的引用(别名)。
         当对象a的内容改变时,对象b的内容也会改变。
浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象。
         当对象a的内容改变时,对象b的父对象不会改变,子对象会改变。
深拷贝(deepcopy)copy模块的deepcopy方法,完全拷贝了父对象及其子对象。
         当对象a的内容改变时,对象b的内容不受影响,即对象b的内容不会改变。
'''




# 4、get():
'''
描述:
    python字典get()返回指定键的值,如果键不存在则返回default设置的默认值
语法:
    dict.get(key, default=None)
参数:
    key--字典中要查找的键
    default--如果指定的键不存在时,返回该默认值
返回值:
    返回指定的键,如果键不在字典中,返回默认值None或指定的默认值
'''

# 5in not in
'''
描述:
    python字典in操作符用于判断键是否存在于字典中,如果键在字典dict里返回True,否则返回False。
    而not in操作符则刚好相反,如果键在字典dict里返回False,否则返回True
语法:
    key in dict
    key not in dict
参数:
    key--要在字典中查找的键
    dict--要查找的字典
返回值:
    如果键在字典里返回True,否则返回False
'''

# 6items()
'''
描述:
    python字典items()方法以列表方式返回可遍历的(键, 值)元组数组。
语法:
    dict.items()
参数:
    无
返回值:
    返回可遍历的(键, 值)元组数组
'''

dict = {'Name' : 'Runoob', 'Age' : 7}

print('value: %s' % dict.items())


# 7keys()
'''
描述:
    python3字典keys()方法返回一个可迭代对象,可以使用list()来转换为列表。
    注意,python2.x是直接返回列表
语法:
    dict.keys()
参数:
    
返回值:
    返回一个迭代器
'''

dict = {'Name' : 'Runoob', 'Age' : 7, 'Sex' : 'female'}
print(dict.keys())
print('字典中所有的键为:', list(dict.keys()))       # 转换为列表


# 8setdefault()
'''
描述:
    python字典setdefault()方法和get()方法类似,
    如果键不存在于字典中,将会添加键并将值设为默认值。
语法:
    dict.setdefault(key, default=None)
参数:
    key--要查找的键
    default--键不存在时,设置的默认值
返回值:
    如果key在字典中,返回对应的值,
    如果key不在字典中,则插入key并设置默认值default且返回defaultdefault默认值为None
'''

dict = {'Name' : 'Runoob', 'Age' : 7}

print('Age键的值为:%s' % dict.setdefault('Age', None))
print('Sex键的值为:%s' % dict.setdefault('Sex', None))
print('新字典为:', dict)


# 9update()
'''
描述:
    python字典update()函数把字典参数dict2key/value(/)更新到字典dict
语法:
    dict.update(dict2)
参数:
    dict2--添加到指定字典dict里的字典
返回值:
    该方法没有任何返回值
'''

dict = {'Name' : 'Runoob', 'Age' : 7}
dict2 = {'Sex' : 'female', 'Age' : 18}

print('更新前的字典dict', dict)
dict.update(dict2)
print('更新后的字典dict', dict)      # dict2的内容更新到dict中,相同的键则进行覆盖

print('字典中所有的值为:', list(dict.values()))

# 11pop()
'''
描述:
    python字典pop()方法删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出,否则返回default值。
语法:
    pop(key[, default])
参数:
    key--要删除的键值
    default--如果没有key,返回default
返回值:
    返回被删除的值
'''

dict = {'Name' : '菜鸟', 'Alexa' : 10000, 'URL' : 'www.runoob.com'}
print('删除键之前的字典:', dict)

pop_obj = dict.pop('Name')
print('删除的元素:', pop_obj)
print('删除键之后的字典:', dict)

pop_obj2 = dict.pop('Age', None)    # 要删除的键不存在,返回None
print(pop_obj2)


# 12popitem()
'''
描述:
    python字典popitem()方法随机返回并删除字典中的最后一对键和值
语法:
    popitem()
参数:
    
返回值:
    返回一个键值对(key, value)形式,按照LIFO(Last In First Out后进先出)顺序原则,即最末尾的键值对。
'''

dict = {'name' : '菜鸟', 'alexa' : 10000, 'url' : 'www.runoob.com'}
print('删除之前的字典:', dict)
# dict.clear()              # 清空字典后,报错KeyError: 'popitem(): dictionary is empty'
pop_obj = dict.popitem()
print('删除的元素:', pop_obj)
print('删除之后的字典:', dict)

python修改字典键(key)的方法

间接修改键的key值方法

第一种(推荐):

第二种方法:

第三种方法:

dict.items()图解:

dict.items()dict.keys()dict.values()三者的区别:

Python字典推导式

字典推导式的语法格式如下:

{表达式 for 迭代变量 in 可迭代对象 [if条件表达式]} # []中内容可有可无

'''
字典推导式:
    自Python2.7以来,列表推导概念就移植到了字典上,从而有了字典推导
'''


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。