python元祖组成字典_Python基础之元组和字典

一、元组:

1、定义:

1494002-20190408181429581-1311513018.png

内存图:

1494002-20190408181700365-2127969628.png

2、基本操作

1494002-20190408181529159-278744165.png

3、元组作用:

1494002-20190408181809895-1830953795.png

4、元组基础知识代码

# 1. 创建空元组

t01=()

t02=tuple()

#2. 创建具有默认值的元组

t01= (1,2,3)

t01= tuple("abcd")

t01= (1,2,[4,5])

print(t01)

# 修改

# t01[2] = 100元组元素不能修改,报错

t01[2][0] = 100# 修改的是元素第三个元素(列表)的元素.

#3. 获取元素(索引 / 切片)

print(t01[:2])

# 获取元组所有元素for item int01:

print(item)

# 倒序获取元组所有元素for i in range(len(t01)-1, -1,-1):

print(t01[i])

t02= ("a","b")

l02= ["a","b"]

t03=t02

l03=l02

t02+= ("c","d") # 创建了新元组对象,改变了t02存储的地址.

l02+= ["c","d"] # 将["c","d"]追加到原列表中.

print(t02) # ('a', 'b', 'c', 'd')

print(t03) # ('a', 'b')

print(l03) # ['a', 'b', 'c', 'd']

# 如果元组只有一个元素,必须多写一个逗号,否则视为普通对象,不是元组对象.

t04= (1,)

print(t04)

5、实例:

(1)根据月份,计算天数

#month = int(input("请输入月份:"))#if month < 1 or month > 12:#print("输入有误")#elif month == 2:#print("28天")## elif month == 4 or month == 6 or month == 9 or month == 11:#elif month in (4,6,9,11):#print("30天")#else:#print("31天")

month= int(input("请输入月份:"))if month < 1 or month > 12:print("输入有误")else:#将每月的天数,存入元组.

day_of_month = (31,28,31,30,31,30,31,31,30,31,30,31)print(day_of_month[month - 1])

(2)在控制台中输入月,日,计算这是一年的第几天。例如输入3月5日,计算天数为?

#方法一#month = int(input("请输入月份:"))#day = int(input("请输入天:"))#day_of_month = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)#result = 0## 累加前几个月#for i in range(month - 1):#result += day_of_month[i]## 累加当月#result += day#print(result)

#方法二

month = int(input("请输入月份:"))

day= int(input("请输入天:"))

day_of_month= (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)#累加前几个月

result = sum(day_of_month[:month - 1])#累加当月

result +=dayprint(result)

二、字典:

1、定义

1494002-20190408183006809-60403333.png

内存图:

1494002-20190408183443122-1169303997.png

2、基本操作:

1494002-20190408183103178-1714066552.png

3、字典推导式

1494002-20190408183204268-1917017213.png

4、字典VS列表

1494002-20190408183259206-1600952522.png

5、字典基础代码

#创建空字典

d01 ={}

d02=dict()

d01= {"a":"A","b":"B"}#d01 = dict("ab") # 分不清key value

d01 = dict([(1,2),(3,4)]) #{1: 2, 3: 4}

#第一次增加

d01["c"] = "C"

#第二次修改

d01["c"] = "CC"

#读取元素(如果不存在则异常)#建议:在字典中读取元素,先判断存在,在进行读取.

if "d" ind01:print(d01["d"])print(d01)#删除

del d01["c"]print(d01)#获取字典中所有元素:

for key ind01:print(key)print(d01[key])#获取字典中所有记录(元组)

for item ind01.items():print(item[0]) #key

print(item[1]) #value

for k,v ind01.items():print(k) #key

print(v) #value

#获取所有键

for k ind01.keys():print(k)#获取所有值

for v ind01.values():print(v)

6、实例:

(1)在控制台中录入一个字符串,打印这个字符串中的字符以及各字符出现的次数

str_input = input("请输入一个字符串:")#key: 字符 value:次数

result ={}#(1)逐一判断字符,出现的次数.

for item instr_input:#(2)如果没有统计过该字符串

if item not inresult:

result[item]= 1

else:#(3)否则,次数增加

#result[item] = result[item] + 1

result[item] += 1

print(result)

(2)给定一个列表["张三丰","无忌","赵敏"] ,以字典的形式输出键为列表元素,值为列表元素长度,形如:{"张三丰":3,"无忌":2,"赵敏",2}

#方法一

list01 = ["张三丰", "无忌", "赵敏"]

dict01={}for item inlist01:

dict01[item]=len(item)#方法二

dic02 = {item: len(item) for item inlist01}print(dic02)

(3)# 练习:

["张三丰", "无忌", "赵敏"]

[101, 102, 103]

(1) 根据两个列表形成一个字典:key姓名,value房间号

(2) 将字典的键与值进行翻转.即:key房间号,value姓名

list01 = ["张三丰", "无忌", "赵敏"]

list02= [101, 102, 102]#循环方式#dict01 = {}#for i in range(len(list01)):#dict01[list01[i]] = list02[i]

#字典推导式

dic02 = {list01[i]: list02[i] for i inrange(len(list01))}print(dic02)#循环方式(值不重复)#dic03 = {}#for key,value in dic02.items():#dic03[value] = key

#字典推导式(值重复)#{101: '张三丰', 102: '赵敏'} 张无忌与赵敏同居,导致key重复,无忌被覆盖.

dic03 = {value: key for key, value indic02.items()}print(dic03)#[(102, '无忌'), (101, '张三丰'), (102, '赵敏')],即值重复时,用列表推导式

list03 = [(value,key) for key, value indic02.items()]print(list03)

(4)练习4:在控制台中录入5个学生信息(姓名/年龄/性别)

#4. 在控制台中录入5个学生信息(姓名/年龄/性别)#数据结构:列表中嵌套字典#[#{#"name":xx,#"age":xx,#"sex":xx,#},#{#"name":xx,#"age":xx,#"sex":xx,#}#.......#]

list_student_info=[]for i in range(2):#每次循环创建一个新字典表示一个新学生

dict_student ={}

dict_student["name"] = input("请输入姓名:")

dict_student["age"] = int(input("请输入年龄:"))

dict_student["sex"] = input("请输入性别:")#向学生列表追加学生信息

list_student_info.append(dict_student)#获取所有学生信息

for dict_stu inlist_student_info:for key,value indict_stu.items():print("%s -- %s"%(key,value))

(5)练习5:猜拳,规则:系统随机出拳,在控制台中循环猜测.

"""猜拳

规则:系统随机出拳,在控制台中循环猜测.

提示:(1)将胜利的策略存入容器

(

("石头","剪刀"),

("剪刀","布"),

("布","石头")

)

(2) 将用户猜的拳与系统出拳形成一个元组"""

importrandom#胜利策略

wins =(

("石头", "剪刀"),

("剪刀", "布"),

("布", "石头")

)#将用户猜的拳与系统出拳形成一个元组

user_input_index = int(input("请输入整数(0表示石头,1表示剪刀,2表示布):"))

items= ("石头","剪刀","布")

user_input_item=items[user_input_index]

sys_input_index= random.randint(0,2)

sys_input_item=items[sys_input_index]#逻辑处理

if user_input_item ==sys_input_item:print("平局")elif (user_input_item,sys_input_item) inwins:print("赢啦")else:print("输啦")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值