欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Pyton中的字典和集合

程序员文章站 2022-10-27 18:19:56
一。字典1.什么是字典问题:用列表同时保存多个意义不同的数据的时候,代码的可读性很低。解决;用字典保存多个意义不同的数据stu = ['小明',20,'男','13535535', '17771837', 80, 170, 80]2.元素的增删改查1)查 - 获取字典的值a .获取单个值1.字典[key] - 获取字典中指定key对应的值(如果key不存在会报错)2.字典.get(key) - 获取字典中指定key对应的值(如果key不存在不会报错,返回None)3.字...

一。字典

1.什么是字典

  • 问题:用列表同时保存多个意义不同的数据的时候,代码的可读性很低。
  • 解决;用字典保存多个意义不同的数据
stu = ['小明',20,'男','13535535', '17771837', 80, 170, 80]

  • 字典是容器型数据类型的数据,将{}作为容器的标志,里面多个元素用逗号隔开(其中元素必须是键值对)
    : {键1:值1, 键2:值2, 键3:值3, …}
  • 字典是可变(支持增删改);字典是无序(不支持下标操作)
  • 字典的元素:键是不可变的,唯一的,用来区分不同数据的;值可以是任何类型的数据,并且可以重复

2.元素的增删改查

  • 1)查 - 获取字典的值

  • a .获取单个值

  • 1.字典[key] - 获取字典中指定key对应的值(如果key不存在会报错)
    2.字典.get(key) - 获取字典中指定key对应的值(如果key不存在不会报错,返回None)
    3.字典.get(key,默认值)- 获取字典中指定key对应的值(如果key不存在不会报错,返回默认值)

  • b.遍历字典
    方式一:(推荐使用)
    for 变量 in 字典:
    循环体(变量在循环体中得到的是字典的key)
    方法二:
    for 变量1,变量2 in 字典.items():
    循环体(循环体中变量1取到的所有的键,变量2取到的是所有键对应的值)

for x in movie1:
   print(x, movie1[x])
print(movie1.items())
for x, y in movie1.items():
   print(x, y)
  • 2 ) 增/改 - 添加键值对/修改键值对的值
  • 字典[key] = 值 - 当key不存在就是添加键值对;当key存在的时候就是修改key对应的值
subject = {
   'name': 'python',
   'score': 3,
   'class_hour': 20,
   'direction' : ['数据分析','web后端', '爬虫','自动测试','自动化运维' ]
}
print(subject)
subject['teacher'] = '毓婷'
print(subject)
subject['score'] = 4
print(subject)
  • 3)删
    del 字典[key] - 删除字典指定key对应的键值对
    字典.pop(key) - 取出字典中指定key对应的值
del subject['class_hour']
print(subject)

del_item = subject.pop('direction')
print(subject)
print(del_item)

3.字典的应用

4.字典相关的操作和方法。

操作

  • 1)字典不支持加法,乘法和比较大小的运算。
  • 2)判断是否相等
  • == 判断两个数据是否相等。
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})  # True
  • is - 判断两个数据的地址是否相等
a = {'a': 10}
b ={'a': 10}
c = a
print(a == b)  # True
print(a is b)  # False
print(a is c)  # True
  • 3)in 和 not in
  • key in 字典 - 判断字典中是否有指定的key
dict1 ={'a': 10, 'b': 20, 'c': 30}
print(10 in dict1)  # False
print('b' in dict1)  # True
  • 4)相关函数:len、dict
  • len(字典) - 获取字典中键值对的个数
dict1 ={'a': 10, 'b': 20, 'c': 30}
print(len(dict1))  # 3
  • dict(数据) - 将其他数据转换成字典(数据的要求:1.序列 2.序列中的元素还是序列, 3.内部的序列有且只有两个元素,第一个元素不可变。)
list1 = ['ab', (10, 20), ['name', '张三']]
print(dict(list1))  # {'a': 'b' , 10 : 20, 'name :'张三’}
  • 5)将字典转换成其他数据
  • 将字典转换成列表/元组 - 将字典的key作为列表/元组的元素
stu = {'name': '小明', 'age': 18, 'score': 100}
print(list(stu))  # ['name' ,'age' ,'score']
print(tuple(stu))  # ('name ,'age' ,'score')
  • 2)将字典转换成字符串
print(str(stu))
  • 3)将字典转成布尔
print(bool({}))  # False
print(bool(stu))  # True

相关方法

  • 1)字典.clear() - 清空
stu = {'name': '小明', 'age': 18, 'score': 100}
stu.clear()
print(stu)   # {}

  • 2)字典.copy() - 复制,和前面列表切片一样的效果,
  • 3)dict.fromkeys(序列,默认值=None) -
    :创建一个新的字典,序列中所有的元素会作为新字典的key,默认值是所有key对应的值。
new_dict = dict.fromkeys('abc')
print(new_dict)  # {'a': None, 'b': None, 'c': None}
new_dict = dict.fromkeys(['name', 'age', 'sex'], 0)
print(new_dict)  # {'name': 0, 'age': 0, 'sex': 0}

  • 4)字典.items()、字典.keys()、字典.values()
stu = {'name': '小明', 'age': 18, 'score': 100}
print(stu.items())  # dict_items([('name', '小明'), ('age', 18), ('score', 100)])
print(stu.keys())   # dict_keys(['name', 'age', 'score'])
print(stu.values())  # dict_values(['小明', 18, 100])
  • 5)字典.setdefault(key, value) - 在字典中添加键值对(单纯的添加键值对,不会修改)
stu = {'name': '小明', 'age': 18, 'score': 100}
stu.setdefault('weight', 50)
print(stu)   # {'name': '小明', 'age': 18, 'score': 100,
 'weight': 50}
stu.setdefault('name', '小花')
print(stu)  # {'name': '小明', 'age': 18, 'score': 100, 
'weight': 50}
  • 6)字典1.update(字典2) - 将字典2中所有的键值对全部添加到字典1中
stu.update({'a': 10, 'b': 20})
print(stu)  # {'name': '小明', 'age': 18, 'score': 100, 
'weight': 50, 'a': 10, 'b': 20}

本文地址:https://blog.csdn.net/xinxing66/article/details/107642941