python--字典

本文详细介绍了如何使用Python创建字典,包括直接创建、dict()函数、列表和zip()函数,以及从keys()和fromkeys()函数生成。讲解了增删改查的基本操作,如添加键值对、删除、修改和查询,还涵盖了嵌套字典和字典推导式的使用。

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

字典的创建

1.使用大括号直接创建
2.使用dict()函数创建
3.以列表作为元素创建
4.大括号与dict()函数混合创建
5.在dict()函数中利用zip()函数创建

>>> a = {'吕布': '战神', '关羽': '武圣', '刘备': '老大哥'}
>>> b = dict(吕布='战神',关羽='武圣',刘备='老大哥')#注意,dict()函数中,键不可加引号
>>> c = dict([('吕布','战神'),('关羽','武圣'),('刘备','老大哥')])
>>> d = dict({"吕布":"战神","关羽":"武圣"},刘备='老大哥')
>>>e = dict(zip(["吕布","关羽","刘备"],["战神","武圣","老大哥"]))
>>> a == b == c == d == e
True

fromkeys()函数可以在值相同的情况下快速生成一个字典。

>>> x = dict.fromkeys('Fish',123)
>>> x
{'F': 123, 'i': 123, 's': 123, 'h': 123}
>>> x['F'] = 456
>>> x
{'F': 456, 'i': 123, 's': 123, 'h': 123}

在末尾添加一个键值对

>>> x['C'] = 789
>>> x
{'F': 456, 'i': 123, 's': 123, 'h': 123, 'C': 789}

pop()函数返回指定键的值并在字典中删除该键值对。

>>> x.pop('s')
123
>>> x
{'F': 456, 'i': 123, 'h': 123, 'C': 789}
>>> x.pop('狗')   #没有的元素会抛出异常
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    x.pop('狗')
KeyError: '狗'
>>> x.pop('狗','没有')#可以加个'没有'来避免抛出异常
'没有'

popitem()函数python3.7之后删除最后一个键值对,3.7版本之前是随机删除一个键值对。

>>> x.popitem()
('C', 789)
>>> x
{'F': 456, 'i': 123, 'h': 123}

del关键字可以删除指定元素,也可以删除整个字典。

>>> del x['i']
>>> x
{'F': 456, 'h': 123}
>>> del x
>>> x
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    x
NameError: name 'x' is not defined

clear()函数清空字典。

>>> y = dict.fromkeys('FishC',123)
>>> y
{'F': 123, 'i': 123, 's': 123, 'h': 123, 'C': 123}
>>> y.clear()
>>> y
{}

指定某个元素利用赋值运算符修改其值。

>>> x = dict.fromkeys('FishC')
>>> x
{'F': None, 'i': None, 's': None, 'h': None, 'C': None}
>>> x['s'] = 123
>>> x
{'F': None, 'i': None, 's': 123, 'h': None, 'C': None}

update()函数同时修改多个键值对。

>>> x.update({'i':'124','h':'125'})
>>> x
{'F': None, 'i': '124', 's': 123, 'h': '125', 'C': None}
>>> x.update(F='70',C='20')
>>> x
{'F': '70', 'i': '124', 's': 123, 'h': '125', 'C': '20'}

相较于直接查询某个值,使用get方法可以避免报错。

>>> x['C']
'20'
>>> x['c']
Traceback (most recent call last):
  File "<pyshell#50>", line 1, in <module>
    x['c']
KeyError: 'c'
>>> x.get('c','这里没有c')
'这里没有c'

setdefault():如果查询的键存在就返回它的值,如果不存在就向末尾添加该键,且第二个参数为其值。

>>> x.setdefault('C','code')
'20'
>>> x.setdefault('c','code')
'code'
>>> x
{'F': '70', 'i': '124', 's': 123, 'h': '125', 'C': '20', 'c': 'code'}

items():获取键值对的视图对象。
keys():获取键的视图对象。
valuels():获取值的视图对象。
视图对象即字典的动态视图,这就意味着当字典的内容发生改变的时候,视图对象的内容也会相应地跟着改变。

>>> keys = x.keys()
>>> values = x.values()
>>> items = x.items()
>>> items
dict_items([('F', '70'), ('i', '124'), ('s', 123), ('h', '125'), ('C', '20'), ('c', 'code')])
>>> keys
dict_keys(['F', 'i', 's', 'h', 'C', 'c'])
>>> values
dict_values(['70', '124', 123, '125', '20', 'code'])
>>> x.pop('c')
'code'
>>> x
{'F': '70', 'i': '124', 's': 123, 'h': '125', 'C': '20'}
>>> items
dict_items([('F', '70'), ('i', '124'), ('s', 123), ('h', '125'), ('C', '20')])
>>> keys
dict_keys(['F', 'i', 's', 'h', 'C'])
>>> values
dict_values(['70', '124', 123, '125', '20'])

copy():浅拷贝。
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。

>>> y = x.copy()
>>> y
{'F': '70', 'i': '124', 's': 123, 'h': '125', 'C': '20'}

len()查询有几个元素。

>>> len(x)
5

innot in判断元素是否存在该字典内。

>>> 'C'in x
True
>>> 'c' not in x
True

把值以列表形式输出。

>>> list(x.values())
['70', '124', 123, '125', '20']

iter()函数生成迭代器,用next()逐个输出。

>> y = iter(x)
>>> next(y)
'F'
>>> next(y)
'i'
>>> next(y)
's'
>>> next(y)
'h'
>>> next(y)
'C'

python在3.8之前是字典无序的,在3.8之可以用reversed()函数倒序输出。

>>> list(reversed(x.values()))
['20', '125', 123, '124', '70']

嵌套

字典也可以作为值。

>>> x = {'吕布':{'语文':60,'数学':70,'英语':80},'关羽':{'语文':80,'数学':90,'英语':70}}
>>> x
{'吕布': {'语文': 60, '数学': 70, '英语': 80}, '关羽': {'语文': 80, '数学': 90, '英语': 70}}
>>> x['吕布']['数学']
70

列表作为值。

>>> x = {'吕布':[60,70,80],'关羽':[80,90,70]}
>>> x['吕布'][1]
70

字典推导式

>>> x = {'吕布':'战神','关羽':'武圣','刘备':'老大哥'}
>>> y = {m:n for n,m in x.items()}
>>> y
{'战神': '吕布', '武圣': '关羽', '老大哥': '刘备'}
>>> d = {'F':70,'i':105,'s':115,'h':104,'c':67}
>>> b = {v:k for k,v in d.items() if v > 100}
>>> b
{105: 'i', 115: 's', 104: 'h'}
>>> d = {x:ord(x) for x  in 'FishC'}#ord函数计算编码值
>>> d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
>>> d = {x:y for x in [1,3,5] for y in [2,4,6]}
>>> d#第一遍传入了1:2,1:4,1:6,最后覆盖只剩1:6,3:6,5:6,键唯一
{1: 6, 3: 6, 5: 6}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GG_Bomd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值