首页 > 其他分享 >字典(dict)

字典(dict)

时间:2022-08-20 14:24:05浏览次数:52  
标签:4.7 three two zero dict dct 字典

4.7 字典(dict)

字典是Python中一种非常重要的数据类型。字典和之前的列表、元组不同,里面的元素使用键-值对进行存储。通常字典中元素的由字符串或数字等可哈希数据类型组成。
可以把字典想象成一个集合,只不过每个元素都是由键-值对组成。字典中的元素的键是不能重复的。字典中的元素也是无序的,这点和集合一样。
可以通过键获取集合中元素的值,并且速度要远快于列表。这种速度上的差异在数据量特别大时更加明显。

4.7.1 字典的创建

4.7.1.1 通过字典标识符号创建

列表在创建的时候用{}做标识。内部的元素用逗号进行分隔。注意:字典和集合都是用{}做标识的。
>>> dct1 = {} # 空字典
>>> dct2 = {'a': 1, 'b': 2} # 字典中存放了2个元素
>>> dct3 = {'小明': 20, '小芳': 18} # 字典中存放了2个元素
>>> dct4 = {[1]: 2} # 尝试用不可哈希数据类型(列表)作为键导致报错

Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
TypeError: unhashable type: 'list'

4.7.1.2 通过字典推导式创建

>>> dct = {i: i ** 2 for i in range(3)}
>>> dct

{0: 0, 1: 1, 2: 4}

4.7.1.3 通过dict函数创建

>>> dict() # 空字典
>>> dict(a='a', b='b', c='c') # 通过关键字创建字典
>>> dict(zip(['one', 'two'], [1, 2])) # 通过映射函数方式创建字典
>>> dict([('one', 1), ('two', 2)]) # 通过可迭代对象创建字典

4.7.2 字典的访问

4.7.2.1 通过访问

>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct['two']

2

>>> dct['zero'] # 如果不存在,则会报错

Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)

4.7.2.2 遍历字典

参见可迭代对象的遍历
注意:遍历字典和其它遍历可迭代对象有所区别,遍历字典所得到的是字典的所有的元素的

dct = {'one': 1, 'two': 2, 'three': 3}
for i in dct:
	print(i)

one
two
three

4.7.2.3 成员资格检查

参见可迭代对象中的成员资格检查
注意:成员资格检查和其它可迭代对象有所区别,对于字典,是判断某个成员是否是字典的某个元素的

dct = {'one': 1, 'two': 2, 'three': 3}
print('one' in dct)
print('zero' in dct)

True
False

4.7.3 字典的修改

4.7.3.1 单个元素的修改

>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct['two'] = 22
>>> dct['two']

22

4.7.3.2 通过|得到更新后的字典

>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct2 = {'zero': 0, 'two': 22}
>>> dct3 = dct | dct2
>>> dct3

{'one': 1, 'two': 22, 'three': 3, 'zero': 0}

4.7.3.3 通过|=原地更新字典

>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct2 = {'zero': 0, 'two': 22}
>>> dct |= dct2
>>> dct

{'one': 1, 'two': 22, 'three': 3, 'zero': 0}

4.7.3.4 通过解包方式得到更新后的字典

>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct2 = {'zero': 0, 'two': 22}
>>> dct3 = {**dct, **dct2}
>>> dct3

{'one': 1, 'two': 22, 'three': 3, 'zero': 0}

4.7.4 字典的删除

4.7.4.1 删除某个元素

>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> del dct['two']
>>> dct['two'] # 删除元素后再次访问则会报错

Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
KeyError: 'two'

4.7.4.2 删除整个字典

>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> del dct
>>> dct # 删除字典后再次访问则会报错

Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
NameError: name 'dct' is not defined. Did you mean: 'dct1'?

4.7.5 字典的方法

4.7.5.1 添加元素

4.7.5.1.1 dict.update(dict2)

描述
把字典dict2的键/值对更新到dict里
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct2 = {'zero': 0, 'two': 22}
>>> dct.update(dct2)
>>> dct

{'one': 1, 'two': 22, 'three': 3, 'zero': 0}

4.7.5.2 删除元素

4.7.5.2.1 clear()

描述
清空字典(删除字典中所有的元素)
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct.clear()
>>> dct

{}

4.7.5.2.2 pop(key[,default])

描述
返回并删除字典中key这个键对应的值,如果键不存在,则返回default作为提示信息,如果没有设置default,则会引发KeyError异常。
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct.pop('one')

1

>>> dct

{'two': 2, 'three': 3}

>>> dct.pop('zero', '没有这个key')

'没有这个key'

>>> dct.pop('zero')

Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
KeyError: 'zero'

4.7.5.2.3 popitem()

描述
返回并删除字典中的最后一对键和值。
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct.popitem()

('three', 3)

>>> dct

{'one': 1, 'two': 2}

4.7.5.3 查询统计类

4.7.5.3.1 get(key, default=None)、setdefault(key, default=None)

描述
返回(设置)指定键的值,如果键不在字典中返回(设置)default设置的默认值。
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct.get('one')
>>> dct.get('zero')
>>> dct.get('zero', 0)

1
None
0

注意:
1、如果指定的存在,则get或者setdefault都是获取到这个的值。
2、如果指定的不存在,则get直接返回default指定的值。而setdefault不但返回default指定的值还会修改字典的内容。
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct.get('zero', 0)

0

>>> dct

{'one': 1, 'two': 2, 'three': 3}

>>> dct.setdefault('zero', 0)

0

>>> dct

{'one': 1, 'two': 2, 'three': 3, 'zero': 0}

4.7.5.3.2 keys()、values()

描述
返回字典所有的(值),注意返回的结果是dict_keys和dict_values类型的数据。可以通过for循环获取里面的元素,也可以通过list或者tuple转换成列表或元组。
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct.keys()

dict_keys(['one', 'two', 'three'])

4.7.5.3.3 items()

描述
返回字典所有的键-值,注意返回的结果是dict_items类型的数据。可以通过for循环获取里面的元素,也可以通过list或者tuple转换成列表或元组。
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct.items()

dict_items([('one', 1), ('two', 2), ('three', 3)])

4.7.5.4 其它类

4.7.5.4.1 copy()

描述
返回一个字典的浅复制
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct2 = dct.copy()
>>> dct2

{'one': 1, 'two': 2, 'three': 3}

4.7.5.4.2 fromkeys(seq, val)

描述
创建一个新的字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值,如果没有提供val则所有键的值默认为None。
示例
>>> dct = {'one': 1, 'two': 2, 'three': 3}
>>> dct2 = dct.fromkeys('abc')
>>> dct3 = dct.fromkeys('abc', 123)
>>> dct2
>>> dct3

{'a': None, 'b': None, 'c': None}
{'a': 123, 'b': 123, 'c': 123}

4.7.6 字典的应用

4.7.6.1 将字符串格式设置功能用于字典

在之前的学习中,我们知道了可以通过format的方式对字符串进行格式化。这里介绍一种更加简单易用的方式,那就是通过format_map来实现对字符串的格式化。
format_map可以让我们通过一个字典映射来对字符串进行格式化。
>>> phonebook = {'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}
>>> "Cecil's phone number is {Cecil}.".format_map(phonebook)

"Cecil's phone number is 3258."

在模板系统中,这种字符串格式设置方式很有用(下面的示例使用的是HTML)。
>>> template = '''
>>> ... {title}
>>> ...
>>> ...

{title}


>>> ...

{text}


>>> ... '''
>>> data = {'title': 'My Home Page', 'text': 'Welcome to my home page!'}
>>> template.format_map(data)

<html> <head><title>My Home Page</title></head> <body> <h1>My Home Page</h1> <p>Welcome to my home page!</p> </body>

4.7.6.2 字典排序

字典其实是一种无序的数据,但是有时候又希望字典能够按照一定的顺序一遍我们能够输出或者查看。这时就需要对字典进行排序了。

4.7.6.2.1 根据key排序
dct = {'one': 1, 'two': 2, 'three': 3}
for k in sorted(dct):
    print(k, dct[k])

one 1
three 3
two 2

4.7.6.2.2 根据value排序
dct = {'one': 1, 'two': 2, 'three': 3, 'zero': 0}
for k in sorted(dct, key=dct.__getitem__):
    print(k, dct[k])

zero 0
one 1
two 2
three 3

标签:4.7,three,two,zero,dict,dct,字典
From: https://www.cnblogs.com/sibide/p/16390614.html

相关文章

  • python 中 判断列表、元组、字符串、字典、集合为空的方法
     001、>>>test1=[]>>>test1[]>>>ifnottest1:##判断列表为空...print("noelement")...noelement 002、>>>test......
  • python数据类型---字典dict
    python数据类型---字典dict1.基本认识字典是Python里一种常用的数据类型,键值对,keyvalue对,它用于存放具有映射关系的数据。字典中的数据是无顺序的。。。。。。d={key......
  • 深入理解Redis 数据结构—字典
    字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构。在字典中,一个键可以和一个值进行关联,这些关联的键和值称为键值对。键值对中键是唯一的,我们可以......
  • 字典序第k小数字
        https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/solution/pythonjavajavascriptgo-di-gui-by-himymbe-5mq5/ funcfindKthNumber......
  • python 中输出字典中的键、值最小、最大的项
     001、输出最小、最大的键或者值>>>dict1={"c":800,"d":600,"a":900,"b":700}>>>dict1{'c':800,'d':600,'a':900,'b':700}>>>min(dict1)......
  • 列表元组字典字符串
    目录列表(List)有序元组(Tuple)有序字典(dictionary)无序字符串(String)很乱,等整理好了加进来列表(List)有序是其他语言的数组,但python支持存储不同类型数据,但通常只存......
  • Python 字典排序
    字典是“键-值对”的无序可变序列在实际运用中,对字典进行排序是一个比较常见的操作,主要用到了python内置函数sorted(),该函数可以对所有可迭代的对象进行排序操作。语法(pyth......
  • tcl dictionary
    tcldictionary1.创建字典——set/createdictcreatekey1value1...keynvaluen[multikeys/values]dictsetdict_namekeyvalue[singlekey/value]dictset/......
  • 推理(Inference)与预测(Prediction)
    在机器学习的背景下,很多人似乎混淆了这两个术语。这篇文章将试图澄清我们所说的这两个词是什么意思,每一个词在哪里有用,以及它们是如何应用的。在这里,我将举几个例子来直观......
  • Python-元组 & 创建字典并利用循环在字典里面添加key和value
      【元组】:有序且不可更改的集合,在Python中是用圆括号编写的,不能删除元组中的元素但是可以通过del完全删除元组https://www.w3school.com.cn/python/python_tuples.a......