Python(十四)字典

什么是字典

  • Python内置的数据结构之一,与列表一样是一个可变序列
  • 以键值对的方式存储数据,字典是一个无序的序列

字典的实现原理:
字典的实现原理与查字典类似,查字典是先根据部首或者拼音查找相对应的页码。Python中的字典是根据key查找value

字典的创建

字典的创建

  • 方法一:使用花括号

字典名={‘张三’:100,‘李四’:98}

  • 方法二:使用内置函数dict()

dict(name=‘jack’,age=20)

例:

zidian={'hello':92,'world':93}
print(zidian)
print(type(zidian))
score=dict(name='jack',age=20)
print(score)#系统会自动将name匹配成键,age匹配成值

结果:

{‘hello’: 92, ‘world’: 93}
<class ‘dict’>
{‘name’: ‘jack’, ‘age’: 20}

字典元素的获取

  • 方法一:使用[]
  • 方法二:get()函数

例:

zidian={'hello':92,'world':93,'python':50}
print(zidian['hello'])
print(zidian.get('world'))
print(zidian.get('abc'))
print(zidian.get('abc',99))#abc是在查找'abc'不存在时,提供的一个默认值

结果:

92
93
None
99

[]取值与使用get()取值的区别

  • []如果字典中不存在指定的key,抛出KeyError异常
    get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回

字典的key的判断:in或not in

  • in:指定的key在字典中存在返回True
  • not in 指定的key在字典中不存在返回True

例:

zidian={'hello':92,'world':93,'python':50}
print('hello' in zidian)

结果:

True

字典的增、删、改操作

  • 字典元素的删除:del

例:

zidian={'hello':92,'world':93,'python':50}
del zidian['hello']
print(zidian)
print('hello' in zidian)

结果:

{‘world’: 93, ‘python’: 50}
False

  • 字典元素的清空:clear()

例:

zidian={'hello':92,'world':93,'python':50}
zidian.clear()#清空字典元素

结果:

{}

  • 字典元素的新增和修改:使用中括号

格式:

字典名[‘key’]=值

例:

zidian={'hello':92,'world':93,'python':50}
zidian['hhh']=99#新增元素
print(zidian)
zidian['hhh']=100#修改元素
print(zidian)

结果:

{‘hello’: 92, ‘world’: 93, ‘python’: 50, ‘hhh’: 99}
{‘hello’: 92,‘world’: 93, ‘python’: 50, ‘hhh’: 100}

获取字典视图的三个方法

  • keys()→获取字典中所有key
  • values()→获取字典中所有value
  • items()→获取字典中所有key,value对

例:

zidian={'hello':92,'world':93,'python':50}
print(zidian.keys())
print(type(zidian.keys()))
print(list(zidian.keys()))#将所有的key组成的视图转成列表
print(zidian.values())
print(list(zidian.values()))#将所有的value组成的视图转成列表
print(zidian.items())
print(list(zidian.items()))#将所有的key、value组成的视图转成列表

结果:

dict_keys([‘hello’, ‘world’, ‘python’])
<class ‘dict_keys’>
[‘hello’,‘world’, ‘python’]
dict_values([92, 93, 50])
[92, 93, 50]
dict_items([(‘hello’, 92), (‘world’, 93), (‘python’, 50)])
[(‘hello’,92), (‘world’, 93), (‘python’, 50)]

字典元素的遍历

  • 格式一(获取键):

for item in 字典名:
print(item)

  • 格式二(获取值):

for item in 字典名:
print(字典名[item])

  • 格式三(获取值):

for item in 字典名:
print(字典名.get(item))

例一(输出键):

zidian={'hello':92,'world':93,'python':50}
for item in zidian:
    print(item)#会输出字典中所有的键

结果:

hello
world
python

例二(输出值):

zidian={'hello':92,'world':93,'python':50}
for item in zidian:
    print(zidian[item])
    print(zidian.get(item))

结果:

92
92
93
93
50
50

字典的特点

  • 字典中所有元素都是一个key—value对,key不允许重复,value可以重复

  • 字典中的元素时无序的

  • 字典中的key必须是不可变对象字典也可以根据需要动态地伸缩

  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构

例:

a={'name':'张三','name':'李四'}
print(a)#key不允许重复
b={'a':10,'b':10}
print(b)

结果:

{‘name’: ‘李四’}
{‘a’: 10, ‘b’: 10}

字典的生成式

使用内置函数zip()
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,任何返回由这些元组组成的列表
格式:

变量名={item:price for item,price in zip(items,prices)}

例:

c=['hello','world','python']
d=[96,97,98]
a={m:n for m,n in zip(c,d)}
print(a)
a={m.upper():n for m,n in zip(c,d)}#upper()全部大写
print(a)

结果:

{‘hello’: 96, ‘world’: 97, ‘python’: 98}
{‘HELLO’: 96, ‘WORLD’: 97,‘PYTHON’: 98}

注意:当键或者值数量不同时,以数量少的为准
例:

c=['hello','world','python','love']
d=[96,97,98]
a={m:n for m,n in zip(c,d)}
print(a)

结果:

{‘hello’: 96, ‘world’: 97, ‘python’: 98}

#此时love并没有进入元组中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值