Python之字典

一、字典创建

1、字典也称作映射,由键和值组成,键值对称为项(item),每个键值之间都用冒号(:)分隔,最外层用花括号。空字典是没有任何项:{}。字典的键必须唯一,值可以重复,字典是无序的。键可以是任何不可变的类型,可能是数字、字符串或元组,其中数字不一定是整数。

d = {12:'数字键', 'zifu':'字符键', (1,2):'元组键'}
print(d)  #{12: '数字键', 'zifu': '字符键', (1, 2): '元组键'}
#空字典d = {} 或者 d = dict()

2、使用 dict() 创建

a = [['name',  '留的华'], ('age', 42),]d = dict(a)
print(d)  #{'name': '留的华', 'age': 42}

3、使用关键字实参创建​​​​​​​

d = dict(name='留的华',age=43)print(d)  #{'name': '留的华', 'age': 43}

4、可以对字典中不存在的值赋值,即在字典中新增了一个项,如果对列表不存在的值赋值将报错。

5、使用in操作的时候,是查找键是否在字典中而不是值​​​​​​​

d = {12:'数字键', 'zifu':'字符键', (1,2):'元组键'}print(12 in d)  #True

6、字典存储的时候,是根据key取的hash计算存储的位置(hash(key)),python中字典是根据key查询value所在的位置。字段的存储方式导致会浪费较大的内存,因为hash(key)计算的值不一定是连续的。

7、字典元素遍历​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}for i in a:    print(i)   #输出对应的key值

二、使用字典格式化

字符串格式化可以通过format_map直接使用字典传值。​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':'男'}s = "今天入职的人叫:{name},年龄:{age}".format_map(a)print(s) #今天入职的人叫:留的华,年龄:43

三、字典方法

1、clear方法,删除所有的字典项,将字典置为空。​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':'男'}a.clear()print(a)  #{}

2、复制方法,返回一个新字典,包括copy浅复制和deepcopy深复制,其中浅复制,值是可变类型,修改的时候原始和新的字典都会变。深复制即修改原始的值不会影响新的字典。​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}b = a.copy()c = deepcopy(a)a['gender'][0] = 3a['age'] = 18print(a) #{'name': '留的华', 'age': 18, 'gender': [3, 1, 2]}print(b) #{'name': '留的华', 'age': 43, 'gender': [3, 1, 2]}print(c) #{'name': '留的华', 'age': 43, 'gender': [0, 1, 2]}

3、fromkeys方法,根据指定的键创建字典,值都是None。​​​​​​​

a = dict.fromkeys(['name', 'age', 'gender'])print(a) #{'name': None, 'age': None, 'gender': None}

4、get方法,根据键获取值,如果没有对应的键,返回None,并且可以设置默认返回值。通过[]方式获取值,如果不存在,就会抛出keyError异常。​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}print(a.get('name','dehua'), ) #留的华

5、items方法,返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定。返回值属于一种名为字典视图的特殊类型。​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}print(list(a.items()))  #转成列表输出print(a.items())输出:[('name', '留的华'), ('age', 43), ('gender', [0, 1, 2])]dict_items([('name', '留的华'), ('age', 43), ('gender', [0, 1, 2])])

6、keys方法,返回一个字典视图,其中包含指定字典中的键。​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}print(a.keys()) #dict_keys(['name', 'age', 'gender'])

7、方法values,返回一个由字典中的值组成的字典视图,返回的视图可能包含重复的值,因为字典值是可以重复的。​​​​​​​

a = {'name': '留的华', 'age': 43, 'gender':[0,1,2]}print(a.values()) #dict_values(['留的华', 43, [0, 1, 2]])

以上items(),keys(),values()三个方法返回的都是字典视图。

四、字典生成式​​​​​​​

name = ['a','b','c']age = [11,18,9]dis = {i:j for i,j in zip(name,age)}print(dis) #{'a': 11, 'b': 18, 'c': 9}
print(dict(zip(name,age))) #{'a': 11, 'b': 18, 'c': 9}

五、字典值是函数​​​​​​​

def showTime():    print(datetime.datetime.now())#其中字典值填写函数名称t = {'time':showTime, 'after': 1}#调用t['time']()  #2023-04-10 22:57:08.058033


关注公众号同步更新:

 三四五才醒的程序员  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值