关于python:11个-Python-字典用法详解

5次阅读

共计 5327 个字符,预计需要花费 14 分钟才能阅读完成。

字典 (Dictionary) 是 Python 提供的一种罕用的数据结构,它用于寄存具备映射关系的数据。本期给大家带来 Python 字典 11 个办法的全面解析,心愿对你有所帮忙。

字典由键(key)和值(value)成对组成,键和值两头以冒号:隔开,项之间用逗号隔开,整个字典由大括号 {} 括起来

格局如下:

dic = {key1 : value1, key2 : value2}

字典也被称作关联数组或哈希表
上面是几种常见的字典创立形式:

# 办法 1
dic1 = {'Author' : 'Python 编程学习圈' , 'age' : 99 , 'sex' : '男'}

# 办法 2
lst = [('Author', 'Python 编程学习圈'), ('age', 99), ('sex', '男')]
dic2 = dict(lst)

# 办法 3
dic3 = dict(Author = 'Python 编程学习圈', age = 99, sex = '男')

# 办法 4
list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', 99, '男']
dic4 = dict(zip(list1, list2))

字典创立的形式还有很多种,这里不再赘述。

接下来是重点

接下来是重点

接下来是重点

字典由 dict 类代表,能够应用 dir(dict) 来查看该类蕴含哪些办法,输出命令,能够看到如下输入后果:

methods = dir(dict)
print('methods =',methods)

methods = ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

字典的办法和属性有很多种,这里咱们重点介绍以下 11 种办法:

['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

1、dict.clear()
clear() 用于清空字典中所有元素(键 - 值对),对一个字典执行 clear() 办法之后,该字典就会变成一个空字典。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', 99, '男']
dic1 = dict(zip(list1, list2))
# dic1 = {'Author': 'Python 编程学习圈', 'age': 99, 'sex': '男'}

dic1.clear()
# dic1 = {}

2、dict.copy()
copy() 用于返回一个字典的浅拷贝。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', 99, '男']
dic1 = dict(zip(list1, list2))

dic2 = dic1 # 浅拷贝: 援用对象
dic3 = dic1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是援用
dic1['age'] = 18

# dic1 = {'Author': 'Python 编程学习圈', 'age': 18, 'sex': '男'}
# dic2 = {'Author': 'Python 编程学习圈', 'age': 18, 'sex': '男'}
# dic3 = {'Author': 'Python 编程学习圈', 'age': 99, 'sex': '男'}

其中 dic2 是 dic1 的援用,所以输入后果是统一的,dic3 父对象进行了深拷贝,不会随 dic1 批改而批改,子对象是浅拷贝所以随 dic1 的批改而批改,留神父子关系。

拓展深拷贝:copy.deepcopy()

import copy

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))

dic2 = dic1
dic3 = dic1.copy()
dic4 = copy.deepcopy(dic1)
dic1['age'].remove(18)
dic1['age'] = 20

# dic1 = {'Author': 'Python 编程学习圈', 'age': 20, 'sex': '男'}
# dic2 = {'Author': 'Python 编程学习圈', 'age': 20, 'sex': '男'}
# dic3 = {'Author': 'Python 编程学习圈', 'age': [99], 'sex': '男'}
# dic4 = {'Author': 'Python 编程学习圈', 'age': [18, 99], 'sex': '男'}

dic2 是 dic1 的援用,所以输入后果是统一的;dic3 父对象进行了深拷贝,不会随 dic1 批改而批改,子对象是浅拷贝所以随 dic1 的批改而批改;dic4 进行了深拷贝,递归拷贝所有数据,相当于齐全在另外内存中新建原字典,所以批改 dic1 不会影响 dic4 的数据

3、dict.fromkeys()
fromkeys() 应用给定的多个键创立一个新字典,值默认都是 None,也能够传入一个参数作为默认的值。

list1 = ['Author', 'age', 'sex']
dic1 = dict.fromkeys(list1)
dic2 = dict.fromkeys(list1, 'Python 编程学习圈')

# dic1 = {'Author': None, 'age': None, 'sex': None}
# dic2 = {'Author': 'Python 编程学习圈', 'age': 'Python 编程学习圈', 'sex': 'Python 编程学习圈'}

4、dict.get()
get() 用于返回指定键的值,也就是依据键来获取值,在键不存在的状况下,返回 None,也能够指定返回值。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))

Author = dic1.get('Author')
# Author = Python 编程学习圈
phone = dic1.get('phone')
# phone = None
phone = dic1.get('phone','12345678')
# phone = 12345678

5、dict.items()
items() 获取字典中的所有键 - 值对,个别状况下能够将后果转化为列表再进行后续解决。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))
items = dic1.items()
print('items =', items)
print(type(items))
print('items =', list(items))

# items = dict_items([('Author', 'Python 编程学习圈'), ('age', [18, 99]), ('sex', '男')])
# <class 'dict_items'>
# items = [('Author', 'Python 编程学习圈'), ('age', [18, 99]), ('sex', '男')]

6、dict.keys()
keys() 返回一个字典所有的键。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))
keys = dic1.keys()
print('keys =', keys)
print(type(keys))
print('keys =', list(keys))

# keys = dict_keys(['Author', 'age', 'sex'])
# <class 'dict_keys'>
# keys = ['Author', 'age', 'sex']

7、dict.pop()
pop() 返回指定键对应的值,并在原字典中删除这个键 - 值对。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))
sex = dic1.pop('sex')
print('sex =', sex)
print('dic1 =',dic1)

# sex = 男
# dic1 = {'Author': 'Python 编程学习圈', 'age': [18, 99]}

8、dict.popitem()
popitem() 删除字典中的最初一对键和值。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))
dic1.popitem()
print('dic1 =',dic1)

# dic1 = {'Author': 'Python 编程学习圈', 'age': [18, 99]}

9、dict.setdefault()
setdefault() 和 get() 相似, 但如果键不存在于字典中,将会增加键并将值设为 default。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))
dic1.setdefault('Author', '编程学习圈')
print('dic1 =',dic1)
# dic1 = {'Author': 'Python 编程学习圈', 'age': [18, 99], 'sex': '男'}
dic1.setdefault('name', '编程学习圈')
print('dic1 =',dic1)
# dic1 = {'Author': 'Python 编程学习圈', 'age': [18, 99], 'sex': '男', 'name': '编程学习圈'}

10、dict.update(dict1)
update() 字典更新,将字典 dict1 的键 - 值对更新到 dict 里,如果被更新的字典中己蕴含对应的键 - 值对,那么原键 - 值对会被笼罩,如果被更新的字典中不蕴含对应的键 - 值对,则增加该键 - 值对。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))
print('dic1 =',dic1)
# dic1 = {'Author': 'Python 编程学习圈', 'age': [18, 99], 'sex': '男'}

list3 = ['Author', 'phone']
list4 = ['编程学习圈', 12345678]
dic2 = dict(zip(list3, list4))
print('dic2 =',dic2)
# dic2 = {'Author': '编程学习圈', 'phone': 12345678}

dic1.update(dic2)
print('dic1 =',dic1)
# dic1 = {'Author': '编程学习圈', 'age': [18, 99], 'sex': '男', 'phone': 12345678}

11、dict.values()
values() 返回一个字典所有的值。

list1 = ['Author', 'age', 'sex']
list2 = ['Python 编程学习圈', [18,99], '男']
dic1 = dict(zip(list1, list2))
values = dic1.values()
print('values =', values)
print(type(values))
print('values =', list(values))

# values = dict_values(['Python 编程学习圈', [18, 99], '男'])
# <class 'dict_values'>
# values = ['Python 编程学习圈', [18, 99], '男']

最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回“Python 编程学习圈”,发送“J”即可收费取得

正文完
 0