Loading...
墨滴

瀋凣

2022/01/13  阅读:34  主题:极简黑

python笔记31

Python day31

1. 字典(dict)

1.3 字典的增删改查

1.3.3 改

根据键修改值
>>> d = dict.fromkeys("Vanovel")
>>> d
{'V'None'a'None'n'None'o'None'v'None'e'None'l'None}
>>> d['o'] = 250
>>> d
{'V'None'a'None'n'None'o'250'v'None'e'None'l'None}
update()

Python 字典 update() 函数把字典参数 dict2key/value(键/值) 对更新到字典 dict 里。

语法

dict.update(dict2)
#dict2 -- 添加到指定字典dict里的字典。
#该方法没有任何返回值。

举个栗子:

  • 第一种写法
>>> d
{'V'None'a'None'n'None'o'250'v'None'e'None'l'None}
>>> d.update({'a':114,'e':115})
>>> d
{'V'None'a'114'n'None'o'250'v'None'e'115'l'None}
  • 第二种写法
>>> d
{'V'None'a'114'n'None'o'250'v'None'e'115'l'None}
>>> d.update(n = "hello",l = "python")
>>> d
{'V'None'a'114'n''hello''o'250'v'None'e'115'l''python'}

1.3.4 查

通过键查找值
>>> d['a']
114
>>> d['x']
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
KeyError: 'x'

有时候用户并不想看到报错,因为他们看不懂···

get()

Python 字典 get() 函数返回指定键的值。

语法

dict.get(key, default=None)
#key -- 字典中要查找的键。
#default -- 如果指定的键不存在时,返回该默认值。
#返回指定键的值,如果键不在字典中返回默认值 None 或者指定的默认值。

举个栗子:

>>> d.get('x')
>>>
  • 加入default参数:
>>> d.get('x',"这里没有x")
'这里没有x'
setdefault()

Python 字典 setdefault() 方法和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

语法

dict.setdefault(key, default=None)
#key -- 查找的键值。
#default -- 键不存在时,设置的默认键值。

举个栗子:

>>> d
{'V'None'a'114'n''hello''o'250'v'None'e'115'l''python'}
>>> d.setdefault('a','code')
114
>>> d.setdefault('x','code')
'code'
>>> d
{'V'None'a'114'n''hello''o'250'v'None'e'115'l''python''x''code'}
item() & keys() & values()

dict.keys()dict.values()dict.items() 返回的都是视图对象(view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。

视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。

我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。

语法

dict.items()
dict.keys()
dict.values()
#返回可视图对象。

举个栗子:

>>> d
{'V'None'a'114'n''hello''o'250'v'None'e'115'l''python''x''code'}
>>> keys = d.keys()
>>> values = d.values()
>>> items = d.items()
>>> keys
dict_keys(['V''a''n''o''v''e''l''x'])
>>> values
dict_values([None114'hello'250None115'python''code'])
>>> items
dict_items([('V'None), ('a'114), ('n''hello'), ('o'250), ('v'None), ('e'115), ('l''python'), ('x''code')])
  • 尝试修改字典,视图对象也会相应改变:
>>> d['V'] = 128
>>> items
dict_items([('V'128), ('a'114), ('n''hello'), ('o'250), ('v'None), ('e'115), ('l''python'), ('x''code')])
>>> keys
dict_keys(['V''a''n''o''v''e''l''x'])
>>> values
dict_values([128114'hello'250None115'python''code'])
copy()

举个栗子:

>>> e = d.copy()
>>> e
{'V'128'a'114'n''hello''o'250'v'None'e'115'l''python''x''code'}

1.4 能对字典做的事(一些学过的函数)

>>> e
{'V'128'a'114'n''hello''o'250'v'None'e'115'l''python''x''code'}
  • len()函数得到键值对个数(字典长度)
>>> len(e)
8
  • innot in 判断字典是否包含某个键
>>> 'V' in e
True
>>> 'v' not in e
False
>>> 128 in e
False
  • list()可将字典的键转换成列表
>>> list(e)
['V''a''n''o''v''e''l''x']
>>> list(e.values())
[128114'hello'250None115'python''code']
  • iter()可将字典的键转换成迭代器
>>> it = iter(e)
>>> next(it)
'V'
>>> next(it)
'a'
>>> next(it)
'n'
>>> next(it)
'o'
>>> next(it)
'v'
>>> next(it)
'e'
>>> next(it)
'l'
>>> next(it)
'x'
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
StopIteration
  • 3.8版本后,字典有了顺序,所以也支持reversed()反向输出
>>> list(reversed(d.values()))
['code''python'115None250'hello'114128]

1.5 字典的嵌套

字典和序列一样都可实现嵌套操作。

  • 嵌套字典
>>> score = {'LvBu':{'Chinese':50,'Math':60,'English':70},'ZhangFei':{'Chinese':70,'Math':80,'English':90}}
>>> score['LvBu']['Math']
60
  • 嵌套列表
>>> score2 = {'LvBu':[50,60,70],'ZhangFei':[70,80,90]}
>>> score2['ZhangFei'][0]
70

1.6 字典推导式

我们在 第18课 和 第19课 时学习了列表推导式,字典推导式和列表推导式形式如出一辙。

👇戳链接复习列表推导式相关知识。

python笔记18
python笔记18
python笔记19
python笔记19

举个栗子:

>>> f = {'V':105,'a':30,'n':70,'o':128,'v':255,'e':114,'l':33}
>>> ff = {v:k for k,v in f.items()}
>>> ff
{105'V'30'a'70'n'128'o'255'v'114'e'33'l'}
  • 加入筛选条件
>>> fff = {v:k for k,v in f.items() if v > 100}
>>> fff
{105'V'128'o'255'v'114'e'}

练习:

  • 使用字典推导式计算字符串"Vanovel"每个字符的编码值,并以键值对的形式存到字典h中;
  • 获取编码值方法:ord()函数,括号内填入字符,返回字符编码值。

答案:

>>> h = {x:ord(x) for x in 'Vanovel'}
>>> h
{'V'86'a'97'n'110'o'111'v'118'e'101'l'108}

思考:

d = {x:y for x in [1,3,5for y in [2,4,6]}

上面的代码运行的结果是什么?为什么?

答案:

>>> d = {x:y for x in [1,3,5for y in [2,4,6]}
>>> d
{163656}
点点关注不迷路
点点关注不迷路
- END -

瀋凣

2022/01/13  阅读:34  主题:极简黑

作者介绍

瀋凣