Python基础教程:字典类型内置方法

一、字典类型概念

1 用途

存多个值,但每一个值都有一个key与之对应,key对值有描述功能。多用于存的值表示的是不同的状态时,例如存的值有姓名、年龄、身高、体重、爱好等。

2 定义

在{}内用逗号隔开多个元素,每一根元素都是以key:value的形式,value可以是任意数据类型,而key通常应该是字符串类型,但是key必须为不可变类型。

造字典方式一

name = {'name1':'lwx','name2':'hanye'}
print(name)
# {'name1': 'lwx', 'name2': 'hanye'}

d = {'k1':111,(1,2,3):222}
print(d['k1'])
print(d[(1,2,3)])
print(type(d))
111
# 222
# <class 'dict'>

造字典方式二

name = dict(name1 = 'lwx',name2 = 'hanye')
print(f'name:{name}')

# name:{'name1': 'lwx', 'name2': 'hanye'}
name = {'name1':'lwx', 'name2':'hanye'}
print(f"name[name1]: {name['name1']}")

#name[name1]:lwx

注意:d={} 默认定义出来的是空字典

3 类型转换

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
info = [
    ['name','lwx'],
    ['age',18],
    ['gender','male']
]
dic = {}
for k,v in info:
    dic[k] = v
print(dic)
# {'name': 'lwx', 'age': 18, 'gender': 'male'}

造字典方式三

info = [
    ['name','lwx'],
    ['age',18],
    ['gender','male']
]
res = dict(info)

print(res)
{'name': 'lwx', 'age': 18, 'gender': 'male'}

造字典方式四
快速初始化一个字典

keys = ['name','age','gender']
d={}.fromkeys(keys,22)
print(d)
#{'name': None, 'age': None, 'gender': None}
二、常用操作+内置方法

常用操作和内置方法分为优先掌握(今天必须得记住)、需要掌握(一周内记住)两个部分

1优先掌握

1.1 按key存取值:可存可取

# dic之按key存取值
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"name[name1]:{name['name1']}")

name['time'] = 'forever'
print(name)

# name[name1]:lwx
# {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever'}

1.2 长度len

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#dic之长度len
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f'len(name):{len(name)}')

# len(name):3

1.3 成员运算in和not in

# dic之成员运算in和not in
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"'name1' in name:{'name1' in name}")
print(f"'lwx' in name:{'lwx' in name}")

# 'name1' in name:True
# 'lwx' in name:False

1.4 删除del,pop,popitem

dic之删除del

name = {'name1':'lwx','name2':'hanye','time':'all'}
del name['time']
print(name)
print(name.get('time'))

# {'name1': 'lwx', 'name2': 'hanye'}
# None     如果得不到,返回None

dic之删除pop

name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
name.pop('time')		# 指定key删除
print(f"name.pop('haha'):{name.pop('haha')}")    #打印删除的key对应的值       
print(f"name.get('time'):{name.get('time')}")

# name.pop('haha'):lala
# name.get('time'):None

dic之删除popitem(),随机删除一个键值对(因为字典无序)
popitem() 方法随机返回并删除字典中的一对键和值。

name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
print(f"name.popitem():{name.popitem()}")

# name.popitem():('haha', 'lala')

1.5 键key、值values、键值对items

# dic之键keys()、值values()、键值对items()的输出
name = {'name1':'lwx','name2':'hanye','time':'all'}

print(f"name.keys:{name.keys()}")
print(f"name.values():{name.values()}")
print(f"name.items():{name.items()}")
# name.keys:dict_keys(['name1', 'name2', 'time'])
# name.values():dict_values(['lwx', 'hanye', 'all'])
# name.items():dict_items([('name1', 'lwx'), ('name2', 'hanye'), ('time', 'all')])

#用列表直接获取
print(list(name.keys()))
print(list(name.values()))
print(list(name.items()))
# ['name1', 'name2', 'time']
# ['lwx', 'hanye', 'all']
# [('name1', 'lwx'), ('name2', 'hanye'), ('time', 'all')]

1.6 循环

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# dic之循环
# dic是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序
name = {'name1':'lwx','name2':'hanye','time':'forever'}

for k,v in name.items():
    print(f'{k: <7} {v}')

# name1   lwx
# name2   hanye
# time    forever

2 需要掌握

2.1 get()

# dic之get()
#返回key对应的value,如果key不存在,返回None
#相对于name[]而言,get()的容错性更好
name = {'name1':'lwx','name2':'hanye','time':'forever'}

print(f"name.get('name1'):{name.get('name1')}")
print(f"naem.get('hiahiahia'):{name.get('hiahiahia')}")

# name.get('name1'):lwx
# naem.get('hiahiahia'):None

2.2 update()

# dic之update()
#将一个name2中不存在于name中的增加到name中,name中有的则更新为name2中的value
name = {'name1':'lwx','name2':'hanye','time':'forever'}
name2= {'deep':'in heart'}
name.update(name2)
print(name)

# {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever', 'deep': 'in heart'}

2.3 fromkeys()

dic = dict.fromkeys(['name','age','sex'],None)
print(f'dic:{dic}')

# dic:{'name': None, 'age': None, 'sex': None}

2.4 setdefault()

# key存在时不会做任何操作
# key不存在时则增加新的键值对
dic = {'a': 1, 'b': 2}

print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
print(f"dic: {dic}")
print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
print(f"dic: {dic}")

# dic.setdefault('a'): 1
# dic: {'a': 1, 'b': 2}
# dic.setdefault('c'): 3
# dic: {'a': 1, 'b': 2, 'c': 3}


#setdefault()的返回值:key对应的值
name = {'name1':'lwx','name2':'hanye','time':'all'}
res = name.setdefault('name','lwx')
print(res)
# lwx

name2 = {}
res2 = name2.setdefault('name','lwx')
print(res2)
# lwx
三、存一个值还是多个值

可以存多个值,值可以使多个数据类型,key必须是不可变数据类型,通常是不可变数据类型中的字符串

四、有序或无序

不能按照索引取值,所以是无序的数据类型

五、可变或不可变

属于可变类型

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
dic = {'a': 1, 'b': 2}
print(f'first:{id(dic)}')
dic['a'] = 3
print(f'second:{id(dic)}')

# first:50821088
# second:50821088
六、小练习

1 统计单词的个数

统计s='hello tank tank say hello sb sb'中每个单词的个数

结果如:{'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}

s='hello tank tank say hello sb sb'

l = s.split()

dic ={}
for item in l:
    if item in dic:
        dic[item]+=1
    else:
        dic[item]=1
print(dic)

# {'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值