一句废话都没有的Pycharm(六):字典

一句废话都没有的Pycharm(六):字典

介绍:

  • 1.字典
  • 2.字典的创建
  • 3.字典元素的获取
  • 4.字典元素的增删改
  • 5.获取字典的视图
  • 6.字典元素的遍历
  • 7.字典生成式

1.字典

字典以键值对的方式存储数据。

如:age={'Tom': 23,'Alice': 66,'Bob': 45}里的对象是一对一对存储的,'Tom': 23冒号之前的叫做“键”,冒号之后的叫做“值”,所以叫键值对。而,列表里的对象都是单独存在的。

字典是个无序序列,而列表是个有序序列。此处的有序无序可以理解为对象在内存里的存储地址位置,即在列表中,第一个放进列表的对象就存在第一个位置上,第二个放进列表的对象就存在第二个位置上,而字典不同,第一个放进字典的对象不一定存在第一个位置上,如下图:

hash(key3)hash(key1)hash(key4)
value 3value 1value 4

上表中k1代表第1个放入字典当中的键,它并没有存储在字典的第一个位置上。(ki代表第i个字典当中的键。)

要求:
key必须是不可变序列。
(不可变序列不可以进行增删改操作。另:字符串,整数序都是不可变序列。列表、字典是可变序列。)
key不可以重复,value可以重复。要是重复的话会被覆盖掉,如:age={'Tom': 23,'Tom': 66,'Bob': 45}输出为{'Tom': 66}前一个被后一个覆盖掉了。

在字典里不可以指定位置插入元素,也就是说没有insert操作。
字典十分浪费空间,属于用空间换时间的结构。如上表中空出的位置就是被浪费的内存。

Python中,字典是通过key来查找value所在的位置的,key是通过hash函数计算出的。

2.字典的创建

  • 常用:花括号。age={'Tom': 23, 'Alice': 66}
  • 内置函数dict() dict(name='Bob', age=45)

代码展示:

#创建
#使用花括号创建
age={'Tom':23,'Alice':66}
print(type(age))
#使用内置函数dict()创建
special=dict(name='Bob',age=45)
print(special)#以花括号的形式输出
#创建空字典
null={}
print(null)

结果展示:
在这里插入图片描述

3.字典元素的获取

  • []
  • get()
    在这里插入图片描述
    代码展示:
#查找
#通过[]查找
print(age['Tom'])
#print(age['Bob'])#不存在,输出:KeyError: 'Bob'
#通过get()查找
print(age.get('Tom'))
print(age.get('Bob'))#不存在,输出None
print(age.get('Bob',1))#设置在key不存在时,输出1

结果:
在这里插入图片描述

4.字典元素的增删改

在这里插入图片描述
代码展示

#判断
print('Tom' in age)
print('Alice' not in age)
#增
age['Peter']=10
print(age)
#改
age['Peter']=11#将Peter的年龄改为11
print(age)
#删
del age['Tom']
print(age)
#清空字典元素
age.clear()
print(age)

结果展示:
在这里插入图片描述

5.获取字典的视图

在这里插入图片描述
代码展示:

#获取视图操作
#获取字典中的所有key:keys()
age={'Tom':23,'Alice':66}
keys=age.keys()
print(keys)
print(list(keys))
#获取字典中的所有value:values()
values=age.values()
print(values)
print(list(values))
#获取字典中的所有key和value:items()
items=age.items()
print(items)
print(list(items))#输出结果中(),这是元组

结果展示:
在这里插入图片描述

6.字典元素的遍历

语法:

for item in age:
print(item)

item是键。

代码展示

#遍历
age={'Tom':23,'Alice':66}
for item in age:
    #print(item)#输出的是键
    print(item,age.get(item),age[item])#输出的是键和值

结果:
在这里插入图片描述

7.字典生成式

理解:我有一堆键,也有一堆值,想要将它们输出成字典的形式,也就是一对一对的形式。
这就需要用到函数zip()

语法:

name:age for name,age in zip(names,ages)

代码展示:

#字典生成式
names=['Tom','Amy','Jerry','Lily']
ages=[22,32,43,21]
a={name:age  for name,age in zip(names,ages)}
print(a)
b={name.upper():age  for name,age in zip(names,ages)}#name.upper()可以让name变大写
print(b)

结果展示:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值