元组和字典概述

一、元组

1. 元组简介
  • 元组是python内置的数据结构之一,是不可变序列,没有增、删、改操作。
  • 一般当我们希望数据不改变时,我们使用元组,其他情况下基本都用列表
2. 元组的创建
  • 直接小括号:t=('a','b','c')
  • 使用内置函数tuple():t=tuple('a','b','c')
  • 元组不是空元组至少有一个逗号(,) :t=('a',)
  • 当元组不是空元组时括号可以省略:t='a',
3. 元组解包
  • 指将元组当中的每一个元素都赋值给一个变量:t,f='c','d'

二、字典

1. 字典的基本介绍
  • 字典属于一种新的数据结构称为映射(mapping)
  • 字典的作用和列表类似,都是用来存储对象的容器
  • 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
  • 在字典中每一个元素都有唯一的名字,通过这个唯一的名字可以找到指定的元素
  • 这个唯一的名字我们称之为key 通过key可以快速查询value 也可以称之为值
  • 字典我们也称之为键值对(key-value)结构
  • 每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)
  • 创建一个有数据的字典 语法 {key:value}
  • 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple…)
  • 字典的键是不能重复的,如果出现重复的后面的会替换前面的
2.字典的使用
  • dict()函数来创建字典
  • get(key[,default]) 根据键来获取字典的值。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值
  • update() 将其他字典的key-value添加到当前的字典当中
  • del 删除字典中的key-value
  • popitem() 删除字典最后的一个key-value 这个方法是有返回值的。删除之后它会将删除的key-value作为返回值返回
  • pop(key[,default]) 根据key删除自定中的value。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值
3.copye()
  • copy() 方法用来对字典进行浅复制
  • 注意:浅复制只会复制字典本身,如果字典中还有个字典是不会进行复制的
4.遍历字典

我们主要可以通过3种方式对字典进行遍历

  • keys() 该方法返回字典所有的key
  • values() 该方法返回一个序列 序列中保存有字典的值
  • items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含有双值子序列 双值分别是 字典中的key和value

三、习题

1.要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入。用户名长度6-20,用户名必须以字母开头;密码长度至少6位,不能为纯数字,不能有空格。

#  要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
# 用户名长度6-20,用户名必须以字母开头
# 密码长度至少6位,不能为纯数字,不能有空格
username=input('输入你的用户名:(长度6-20,必须以字母开头)')
while True:
    if len(username)<6:
        username=input('用户名太短,请重新输入用户名:(长度6-20,必须以字母开头)')
    elif len(username)>20:
        username=input('用户名太长,请重新输入用户名:(长度6-20,必须以字母开头)')
    elif not username[0].isalpha():
        username = input('必须以字母开头,请重新输入用户名:(长度6-20,必须以字母开头)')
    else:
        print('用户名输入成功!')
        break
password=input('输入你的密码:(长度至少6为,不能为纯数字,不能有空格)')
def x(password):
    for i in password:
        if i.isspace():
            return 1
    else:
        return 0
while True:
    if len(username)<6:
        password=input('密码太短,请重新输入密码:(长度至少6为,不能为纯数字,不能有空格)')
    elif password.isdecimal():
        password = input('不能为纯数字,请重新输入密码:(长度至少6为,不能为纯数字,不能有空格)')
    elif x(password):
        password = input('不能有空格,请重新输入密码:(长度至少6为,不能为纯数字,不能有空格)')
    else:
        print('密码输入成功!')
        break

2.现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中,每个办公室至少一位老师。

import random
lis=['a','b','c','d','e','f','g','h']
b=[[],[],[]]
for i in range(3):
    b[i].append(lis.pop(random.randint(0,7-i)))
for i in lis:
    b[random.randint(0,2)].append(i)
print('办公室1有{0},{1}位老师'.format(str(b[0]),str(len(b[0]))))
print('办公室1有{0},{1}位老师'.format(str(b[1]),str(len(b[1]))))
print('办公室1有{0},{1}位老师'.format(str(b[2]),str(len(b[2]))))

3.a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},{“src”:“python3”}]}}找到python1/python2/python3

a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}}

for value1 in a['data']['result']:
    for value2 in value1.values():
        print(value2)

4.有如下值列表[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key的值中,将小于66值保存至第二个key的值中。

b=[11,22,33,44,55,66,77,88,99,90]
dic=dict()
list1=list()
list2=list()
for num in b:
    if num>66:
        list1.append(num)
    elif num<66:
        list2.append(num)
dic['key1']=list1
dic['key2']=list2
print(dic)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值