Python dict 字典操作

本文详细介绍了Python字典的基本操作,包括定义、访问、修改、添加、删除键值对,以及字典的合并和常见方法。同时,还展示了如何遍历字典的键、值和键值对。此外,讨论了字典的常用方法,如get()、update()等,并给出了实例演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python dict 字典操作

 

【参考】:

  • https://www.runoob.com/python/python-dictionary.html

 

1. 字典定义

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

字典由键值对{ key : value }组成,每个键值之间用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中,格式为:

d = {key1 : value1, key2 : value2 }

dict = {'a': 1, 'b': 2, 'b': '3'}

注意,字典的键是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}

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

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

 

2. 字典访问

2.1 dict[key]

在方括号中指定键(key),即可以获取对应的值(value)。

>>> d = {'a':1, 2: 'b'}
>>> d['a']
1
>>> d[2]
'b'

如果用字典里没有的键访问数据,则会报错:

>>> d['b']
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    d['b']
KeyError: 'b'

 

2.2 dict.get(key,default)

通过字典的get()方法,也可以获取键对应的值。

dict.get(key,[default]),其中default为可选项,用于指定当‘键’不存在时返回的默认值,如果省略,默认返回None。

>>> d = {'a':1, 2: 'b'}
>>> d.get('a')
1
>>> d.get('b',123)
123
>>> d.get('b')
>>> 

 

3. 字典操作

3.1 修改键对应的值

直接对方括号引用的键值对赋值,dict[key] = new_value,即可完成字典中对应键值的修改。

>>> d = {'a':1, 2: 'b'}
>>> d['a']=2
>>> d
{'a': 2, 2: 'b'}

 

3.2 添加键值对

对字典中没有的键做引用赋值,dict[new_key] = new_value,即可向字典中增加键值对。

>>> d['b']=2
>>> d
{'a': 2, 2: 'b', 'b': 2}

 

3.3 删除键值对

使用del语句,可以实现对字典中键值对的删除,del dict[key]。

也可以用字典的pop()方法,完成对键值对的删除。

>>> del d['b']
>>> d
{'a': 2, 2: 'b'}
>>> d.pop(2)
'b'
>>> d
{'a': 2}

>>> del d
>>> d
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    d
NameError: name 'd' is not defined

如果要清空字典,可以使用字典的clear()方法,dict.clear()。

如果del dict不加键引用,会直接删除字典对象。

 

3.4 字典合并

建议使用字典的update()方法,将另一个字典更新入当前字典。

>>> d1 = {'a': 1}
>>> d2 = {2: 'b'}
>>> d = {}
>>> d
{}
>>> d.update(d1)
>>> d
{'a': 1}
>>> d.update(d2)
>>> d
{'a': 1, 2: 'b'}

对于键都是字符串的字典,也可以使用dict(d1.items() | d2.items()) 和 dict(d1, **d2)的方法。

  • dict(d1.items() + d2.items()) :d.items()方法会返回一个dict_items对象,类似与集合对象,不支持使用+ 操作符,但可以使用 | 操作符求合集,或使用 & 操作符求交集。

  • dict(d1, **d2) :需要字典键必须为字符串类型,否则报错:TypeError: keywords must be strings,因为**本质为形参和实参对的传递,而参数变量名不可以数字开头。

>>> d1 = {'a': 1}
>>> d2 = {2: 'b'}
>>> d1.items() | d2.items()
{('a', 1), (2, 'b')}
>>> dict(d1.items() | d2.items())
{'a': 1, 2: 'b'}
>>> d1.items() & d2.items()
set()

>>> dict(d1,**d2)
Traceback (most recent call last):
  File "<pyshell#44>", line 1, in <module>
    dict(d1,**d2)
TypeError: keywords must be strings
>>> d3 = {'b':2}
>>> dict(d1,**d3)
{'a': 1, 'b': 2}

 

4. 字典方法

4.1 外部函数

 

序号

 

函数及描述

 

1

 

cmp(dict1, dict2)

比较两个字典元素。

 

2

 

len(dict)

计算字典元素个数,即键的总数。

 

3

 

str(dict)

输出字典可打印的字符串表示。

 

4

 

type(variable)

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

 

4.2 内置方法

 

序号

 

函数及描述

 

1

 

dict.clear()

删除字典内所有元素

 

2

 

dict.copy()

返回一个字典的浅复制

 

3

 

dict.fromkeys(seq[, val])

创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

 

4

 

dict.get(key, default=None)

返回指定键的值,如果值不在字典中返回default值

 

5

 

dict.has_key(key)

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

 

6

 

dict.items()

以列表返回可遍历的(键, 值) 元组数组

 

7

 

dict.keys()

以列表返回一个字典所有的键

 

8

 

dict.setdefault(key, default=None)

和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

 

9

 

dict.update(dict2)

把字典dict2的键/值对更新到dict里

 

10

 

dict.values()

以列表返回字典中的所有值

 

11

 

pop(key[,default])

删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

 

12

 

popitem()

返回并删除字典中的最后一对键和值。

 

5. 字典遍历

5.1 dict.items() 返回键值对元组

dict.items()方法会返回键值对元组 (k,v) 组成的列表 [(k1,v1),(k2,v2)...]。当使用for循环时

  • 如果使用一个变量for item in dict.items()会接收到(k,v)元组

  • 如果使用元组变量for k,v in dict.items()可以分别接收到键和值。

>>> d = {'a': 1, 2: 'b'}
>>> for item in d.items():
	print(item)
('a', 1)
(2, 'b')

>>> for k,v in d.items():
	print("key : %s , value : %s" %(k,v))
key : a , value : 1
key : 2 , value : b

 

5.1 dict,dict.keys()返回键列表,dict.values()返回值列表

  • dict.keys(),返回键列表对象dict_keys

  • dict.values(),返回值列表对象dict_values

>>> for k in d.keys():
	print("key : ",k)
key :  a
key :  2

>>> for v in d.values():
	print("value : ",v)
value :  1
value :  b

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值