python学习基础知识6

8月3号小结

目录

字典

常用模块random

字典

在容器中存放数据以及对数据进行说明的一种容器。

在列表中保存学生的信息(由于没有相应的解释,在列表中查看数据不会很清楚对应的信息,一般不建议使用列表保存信息)

比如:[‘小明’, 20, 167, 90, 98, 80, 70]

你会发现有些数字你根本不知道其对应信息是啥,所以使用字典保存数据。

{‘name’: ‘小明’, ‘age’: 20, ‘height’: 167, ‘weight’: 90}

这样可以更加直观的看到数据以及所对应的信息。

一、性质
  1. 字典容器符号:{};类型:dict

  2. 字典是无序的。

  3. 字典是可变的(增删改)。

  4. 字典中元素是以键(key)值(value)对方式存在。比如:key:value

    key:对数据的索引以及对数据的解释说明(只能是不可变数据类型)。

    value:实际要保存的数据(可以是任意数据类型)。

  5. 对字典的操作默认是对键做操作。

二、字典没有拼接、重复、比较大小等操作
三、字典的遍历
dict1 = {
    'name': '小明',
    'age': 20,
    'height': 167,
    'weight': 90
}
for i in dict1:
    print(i)
    # 通过键获取值
    print(dict1[i])
  • 获取字典中所有键值对:items,得到的是可迭代对象(可以做遍历)。

    print(dict1.items())
    for key, value in dict1.items():
        print(key, value)
    # 获取字典中所有的键:keys
    # 获取字典中所有的值:values
    print(dict1.keys(), dict1.values())
    
四、字典的增删改
  • 创建空字典

    # dict函数(构造器)中的每一组参数就是字典中的一组键值对
    person = dict(name='张三', age=55, weight=60, home='湖北武汉')
    print(person)    # {'name': '张三', 'age': 55, 'weight': 60, 'home': '湖北武汉'}
    
    # 可以通过Python内置函数zip压缩两个序列并创建字典
    items1 = dict(zip('ABCDE', '12345'))
    print(items1)    # {'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5'}
    items2 = dict(zip('ABCDE', range(1, 10)))
    print(items2)    # {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
    
    # 用字典生成式语法创建字典
    items3 = {x: x ** 3 for x in range(1, 6)}
    print(items3)     # {1: 1, 2: 8, 3: 27, 4: 64, 5: 125}
    
    dict1 = {}
    print(dict1, type(dict1))
    dict2 = dict()
    print(dict2, type(dict2))
    

a.字典[键] = 值

dict1 = {}
dict1['name'] = '小王'
print(dict1)

b.setdefault:向字典中添加元素

  • 如果字典中已经存在了这个键,字典不发生变化。
  • 如果字典中不存在这个键,等于键和值添加到字典中。
  • 如果setdefault只传入了键,默认将之设置为None
dict1.setdefault('age', 30)
dict1.setdefault('age', 20)
# dict1.setdefault({'age': 40, 'address':'China'})
dict1.setdefault('address')
print(dict1)
print('*' * 20)

# 可以这样做,用setdefault来传入多个键值对
dict2 = {
    1: {'name': '小明'}
}
result = dict2.setdefault(2, {'name': '小李'})
print(result)
print(dict2)
print('*' * 20)

c.update

  • 将一个字典更新到原字典中,如果键不存在,添加操作;反之,修改操作。
dict1.update({'score': 90, 'address': 'China'})
print(dict1)

修改

a.字典[键] = 值 (键存在就变成修改)

dict1['name'] = '小李'
print(dict1)

b.update

  • 将一个字典更新到原字典中,如果键不存在,添加操作;反之,修改操作。
dict1.update({'score': 90, 'address': 'China'})
print(dict1)

删除

  • del 字典[键]
del dict1['age']
  • 字典.pop(键)
dict1.pop('address')
print(dict1)
  • clear:清空
dict1.clear()
print(dict1)
五、字典的相关补充

sum、max、min、sorted等一系列方法默认为针对字典的键做操作。

dict1 = {'b': 1, 'a': 10, 'c': 20}
print(sorted(dict1))

字典推导式

students = {
    '小明': 90, '小王': 60, '小张': 80
}
# 将字典中成绩大于等于80分的学生及其成绩填入到新的字典中
student1s = {key: students[key] for key in students if students[key] >= 80}
print(student1s)

student2s = {key: value for key, value in students.items() if value >= 80}
print(student2s)

查找

  1. 通过键查找值(如果字典中键不存在,会报错)
students = {
    '小明': 90, '小王': 60, '小张': 80
}
print(students['小明'])
# print(students['张三'])   # KeyError: '张三'
  1. 使用get方法通过键获取对应的值,如果取不到不会引发KeyError异常而是返回None或设定的默认值。
# 字典中的值又是一个字典(嵌套的字典)
students = {
    1001: {'name': '狄仁杰', 'sex': True, 'age': 22, 'place': '山西大同'},
    1002: {'name': '白元芳', 'sex': True, 'age': 23, 'place': '河北保定'},
    1003: {'name': '武则天', 'sex': False, 'age': 20, 'place': '四川广元'}
}

print(students.get(1002))    # {'name': '白元芳', 'sex': True, 'age': 23, 'place': '河北保定'}
print(students.get(1005))    # None
print(students.get(1005, {'name': '无名氏'}))    # {'name': '无名氏'}

常用的模块random

首先我们要先导入random模块

import random

  • randrange():从range()产生的容器中随机选择一个元素。
import random
print(random.randrange(1, 11, 2))
  • random():从[0, 1)范围中随机产生一个浮点数
print(random.random())
  • randint():从[a,b]中随机选取一个整数
print(random.randint(1, 100))
  • choice():从容器中随机选取一个元素
names = ['张三', '李四', '王五']
print(random.choice(names))
  • choices():从容器中随机选取k个元素(放回的取元素)。
print(random.choices(names, k=5))
  • sample():从容器中随机选取k个元素(不放回的取元素)。
print(random.sample(names, k=3))
  • shuffle():打乱有序、可变容器(列表)中元素的顺序。
random.shuffle(names)
print(names)

案例:设置一个随机提问的程序,要求每次提问前可以设置一次性抽取的学生个数,允许一个学生多次被提问。(这里我使用函数来封装,但是其实这种简单的要求,不需要用函数来封装)

students = ['张三', '李四', '王五', '赵六', '孙七']


# random.choices()
def choice_student(k):
    x = random.choices(students, k=k)
    return x


print(choice_student(5))

使用wxpythonPyQt等能够将程序做乘可视化的软件。

使用pyinstall将程序封装为一个exe可执行文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值