2020-10-17
python学习
00
请注意,本文编写于 1286 天前,最后修改于 1286 天前,其中某些信息可能已经过时。

目录

1. 什么是字典?
2. 字典的定义
3. 字典的相关操作
1. 字典的修改与增加
1. 直接赋值法
2. update()方法
2. 字典的访问
1. 直接获取法
2. get()
3. setdefault()
3. 字典的删除
1. pop()方法
2. popitem()方法
3. clear()方法
4. 字典的遍历
1. 遍历key
2. 遍历value
3.遍历k-v
4. py2和py3字典的区别

1. 什么是字典?

  1. 字典是key-value键值对的集合;
  2. 字典是可变的、无序的、key不重复的一个集合;
  3. 使用{}符合标记,key和value使用:隔开。 字典的限制:
  4. 字典的key不能重复;
  5. 字典的key需要可以hash。

2. 字典的定义

  1. 定义空字典:d=dict() 或者d = {};
  2. key
    写法: d = {'a':1,'b':2},d = {'a':10, 'b':20, 'c'
    , 'd':[1,2,3]};
  3. fromkeys()生产一个字典:d=dict.fromkeys(range(4))。
python
d=dict.fromkeys(range(4)) d
{0: None, 1: None, 2: None, 3: None}

3. 字典的相关操作

1. 字典的修改与增加

python
#生成一个初始字典: d=dict.fromkeys(range(7))
1. 直接赋值法
python
##当key不存在时候直接增加: d['a'] = 11 print(d) ##当key存在时候修改对应value值: d[1] = 12 print(d)
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 'a': 11} {0: None, 1: 12, 2: None, 3: None, 4: None, 5: None, 6: None, 'a': 11}
2. update()方法
python
#生成一个初始字典: d=dict.fromkeys(range(7)) ##update可以添加进一个可迭代对象。(如果原来有key,仅做修改,。没有则增加) d.update([('b',111),('d',123)]) print(d)
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 'b': 111, 'd': 123}

2. 字典的访问

python
#生成一个初始字典: d=dict.fromkeys(range(7)) d.update([('b',111),('d',123)])
123 {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 'b': 111, 'd': 123} 111 None 111 isme
1. 直接获取法
python
#可以直接通过key获取value的值。如果key不存在则会报错。 print(d['d'])
2. get()
python
#get方法访问 #get()获取字典的value值 print(d) print(d.get('b')) print(d.get('aa')) #如果key不存在就访问None
3. setdefault()
python
#setdefault() 方法: ## 当key存在时候返回其对应的value值, 不存在则返回设置的default值。 ## 语法 dict.setdefault('key','default')) print(d.setdefault('b','isme')) print(d.setdefault('aa','isme')) #如果key不存在就访问默认值 ##如果default没设置就和常规的get方法一样。
111 isme

3. 字典的删除

python
#生成一个初始字典: d=dict.fromkeys(range(7)) d.update([('b',111),('d',123)])
1. pop()方法
python
## pop() 通过指定key 的值删除并返回对应的value 值。如果对应的k值不存在则报错。 print(d.pop('b')) #返回对应的value 值 print(d.pop('b','123')) #上边已经删除了b的值,次数返回默认值。
111 123
2. popitem()方法
python
#popitem()随机删除一个元素,并返回其 k-v 值。 print(d.popitem())
(0, None)
3. clear()方法

clear() 清空一个字典,字典太大会引起垃圾回收。

4. 字典的遍历

python
#生成一个初始字典: d=dict.fromkeys(range(3)) d.update([('b',111),('d',123)])

for in 遍历,返回的是字典的value值

1. 遍历key
python
for i in d: print(i)
0 1 2 d b
2. 遍历value

values()方法返回字典的value值

python
print(d.values) for i in d.values(): print(i)
<built-in method values of dict object at 0x7f7eac075f88> None None None 123 111
3.遍历k-v

items()方法可以直接返回k-v对

python
print(d.items()) for i in d.items(): print(i)
dict_items([(0, None), (1, None), (2, None), ('d', 123), ('b', 111)]) (0, None) (1, None) (2, None) ('d', 123) ('b', 111)

k-v解构

python
for k,v in d.items(): print(k,v)
0 None 1 None 2 None d 123 b 111

4. py2和py3字典的区别

在Python2中items,keys,values,返回的是一个list,会复制一块内存空间。 在Python3中items,keys,values,返回的是一个生成器,是不会占用系统资源的。 因此在Python2中如果你需要遍历字典的时候,数据量达到千万级别的时候,那么你用items,keys,values,就是变得很慢。 但是在Python2中有类似和Python3中对应的不复制内存的方法:

  1. Python2中的 'iterkeys' 对应Python3中的 'keys'
  2. Python2中的 'itervalues' 对应Python3中的 'values'
  3. Python2中的 'iteritems' 对应Python3中的 'items'

本文作者:mykernel

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!