python中的字典和集合,


1.字典

# 基础数据类型
# bool int float str list tuple dict set
# list dict set 可变数据类型
# bool int float str tuple 不可变数据类型


# 1.字典 dict
# dict_data={key: value, key1: value1}
# 1,符号以大括号表示
# 2,数据是以键值对出现的 键值中间用冒号连接
# 3,key的值必须是不可变类型,key是唯一的
print('1.字典')

# 定义一个空字典
dict_data = {}
print(dict_data)
print(type(dict_data))

# 定义一个有数据的字典
# key是不可变数据类型
# value可以是任何数据类型
# key值重复时,后面的键值对会覆盖前面的键值对
dict_data = {'小明': 20, '小明': 18}
print(dict_data)

# 字典是没有索引的 无序的
# 因为没有索引,所以才没有顺序
# 字典可以根据key获取value
dict_data = {'小明': 20, '小芳': {'age': 18, 'gender': ''}}
print(dict_data['小芳'])

# 2.字典增加数据
print()
print('2.字典增加数据')
dict_data = {'小明': 20}
dict_data['小芳'] = 18
print(dict_data)


# 3.字典修改数据
# 原理:相当于增加数据,但是key值重复
# key值重复时,后面的键值对会覆盖前面的键值对
print()
print('3.字典修改数据')
dict_data = {'小明': 20}
dict_data['小明'] = {'age': 18, 'gender': ''}
print(dict_data)

# 增加与修改的区分
# 当数据不存在就增加 当数据存在就是修改


# 4.字典删除数据
print()
print('4.字典删除数据')
dict_data = {'小明': 20}
del dict_data['小明']
print(dict_data)

 

 

2.字典的操作方法

(1)压缩和解包

# 压缩
# 当多个数据赋值给一个变量时,会默认为元组
# 压缩多个数据到一个变量里面,以元组的形式存储
print()
print('压缩和解包')
a = 'name', 18  # 元组
print(a)  # ('name', 18)
# 解包
name, age = a
print(name, age)  # 解包

(2)get()

# get(key,None)
# 获取一个数据,如果存在就返回对应的value 不存在就返回None
# None 是可以改变的,当不存在是返回这个位置的数据,默认为None
print()
print('get()')
dict_data = {'小明': 20}
print(dict_data.get('小明'))  # 20
print(dict_data.get('666'))  # None
print(dict_data.get('666', False))  # False
print(dict_data.get('666', 555))  # 555

 

 (3)pop()和popitem()

# pop()
# 删除指定key的数据
print()
print('pop()')
dict_data = {'小明': 20}
dict_data.pop('小明')  # 删除指定key的数据
print(dict_data)


# popitem()
# 删除字典的最后一个数据
print()
print('popitem()')
dict_data = {'小刚': 15, '小明': 20, '小芳': 18}
dict_data.popitem()
print(dict_data)

 

 (4)update()

# update(字典)  更新
# 相当于列表的extend()
print()
print('update()')
dict_data = {'小刚': 15, '小明': 20}
dict_data.update({'小芳': 18})  # 小括号里面是字典!
print(dict_data)

 

 (5)keys()  values()  items()

# keys()
# 获取字典中的所有key 并存放到一个dict_keys对象里面
print()
print('keys()')
dict_data = {'小刚': 15, '小明': 20}
print(dict_data.keys())
print(type(dict_data.keys()))
print(list(dict_data.keys()))  # 可以强转为列表

for i in dict_data.keys():
    print(i)


# values()
# 获取字典中的所有value
print()
print('values()')
dict_data = {'小刚': 16, '小明': 20}
print(dict_data.values())
print(type(dict_data.values()))
print(list(dict_data.values()))  # 可以强转为列表

for i in dict_data.values():
    print(i)


# items()
print()
print('items()')
dict_data = {'小刚': 18, '小明': 20}
print(dict_data.items())
print(type(dict_data.items()))
print(list(dict_data.items()))  # 可以强转为列表

for i in dict_data.items():
    print(i)
    print(list(i))  # 强转为列表

for i in dict_data.items():
    print(i[0], i[1])

for name, age in dict_data.items():  # 解包
    print(name, age)

 

 

3.集合

# 集合 set
# set_data = {数据,数据,数据,...}
# 集合是无序的,唯一的(数据不能重复)
# 集合没有索引和key

# '' [] {} ()  定义空的数据
# str() list() dict() tuple()
# 定义一个空的集合
set_data = set()
print(type(set_data))
print(set_data)

# 无序的
print()
set_data1 = {100, 200, 300}
print(set_data1)  # 是无序的!

# 唯一的
# 可以去除重复的数据
print()
set_data = {1, 2, 3, 4}
print(set_data)  # {1, 2, 3, 4}
set_data = {1, 2, 3, 4, 4}
print(set_data)  # {1, 2, 3, 4} 和上一个一样

# add() 增加数据
print()
set_data = {1, 2, 3, 4}
set_data.add(100)
print(set_data)

# remove() 删除数据
print()
set_data = {1, 2, 3, 4}
set_data.remove(2)  # 删除数据2
print(set_data)

 

 

4.今日作业

# 今日作业
"""
本次考试张三59分,李四80,
王五99分,小宋56分,
请使用字典来表达此数据结构,
并筛选出来不及格的同学及分数
"""
print('今日作业')
name_score = {'张三': 59, '李四': 80,
              '王五': 99, '小宋': 56}  # 创建字典存储数据
for name, score in name_score.items():  # 解包
    if score < 60:  # 判断是否不及格
        print(name, score)

 

评论关闭