day05--课后练习-字典

!/usr/bin/env python
_*_coding:utf-8_*_
@Author : Wenjie

1,有如下变量(tu是个元祖),请实现要求的功能
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
a.讲述元祖的特性
1、只读列表,由()组成,用,隔开
2、不可变,元祖内部第一层元素的内存地址不可变
3、如果只有一个元素,末尾加逗号

b.请问tu变量中的第一个元素"alex"是否可被修改?
不可被修改

c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven"
k2 对应的是一个列表,可以被修改
tu[1][2]["k2"].append("Seven")
print(tu)

d.请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven"
k3对应的是一个元组,不可被修改

2, 字典dic,
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}

a.请循环输出所有的key
1、for k in dic.keys():
print(k)
2、for k in dic:
print(k)

b.请循环输出所有的value
1、for v in dic.values():
print(v)
2、for k in dic:
print(dic[k])

c.请循环输出所有的key和value
for k, v in dic.items():
print(k,v)

for k in dic:
print(k,dic[k])

d.请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
1、 dic["k4"] = "v4"
print(dic)
2、res = dic.setdefault("k4","v4")
print(dic,res)

e.请在修改字典中"k1"对应的值为"alex",输出修改后的字典
dic["k1"] = "alex"
print(dic)

f.请在k3对应的值中追加一个元素44,输出修改后的字典
dic["k3"].append(44)
print(dic)

g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
dic["k3"].insert(0,18)
print(dic)


3,
av_catalog = {
"欧美": {
"www.youporn.com": ["很多免费的,世界最大的", "质量一般"],
"www.pornhub.com": ["很多免费的,也很大", "质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多", "资源不多,更新慢"],
"x-art.com": ["质量很高,真的很高", "全部收费,屌丝请绕过"]
},
"日韩": {
"tokyo-hot": ["质量怎样不清楚,个人已经不喜欢日韩范了", "verygood"]
},
"大陆": {
"1024": ["全部免费,真好,好人一生平安", "服务器在国外,慢"]
}
}

a, 给此["很多免费的,世界最大的", "质量一般"]列表第二个位置插入一个元素:'量很大'。
av_catalog["欧美"]["www.youporn.com"].insert(1,"量很大")
print(av_catalog)

b, 将此["质量很高,真的很高", "全部收费,屌丝请绕过"]列表的"全部收费,屌丝请绕过"删除。
av_catalog["欧美"]["x-art.com"].remove("全部收费,屌丝请绕过")
print(av_catalog)

c, 在此["质量很高,真的很高", "全部收费,屌丝请绕过"]列表中添加"金老板最喜欢这个"。
av_catalog["欧美"]["x-art.com"].append("金老板最喜欢这个")

d, 将此["质量怎样不清楚,个人已经不喜欢日韩范了", "verygood"]列表的"verygood"全部变成大写。
av_catalog["日韩"]["tokyo-hot"][1] = av_catalog["日韩"]["tokyo-hot"][1].upper()
# 更改字符串需要重新赋值
print(av_catalog)

e, 给'大陆'对应的字典添加一个键值对'1048': ['一天就封了']
av_catalog["大陆"]['1048'] = ['一天就封了']
print(av_catalog)

f, 删除此"letmedothistoyou.com": ["多是自拍,高质量图片很多", "资源不多,更新慢"]键值对。
del av_catalog["欧美"]["letmedothistoyou.com"]
av_catalog["欧美"].pop("letmedothistoyou.com")
print(av_catalog)

g, 给此["全部免费,真好,好人一生平安", "服务器在国外,慢"]列表的第一个元素,加上一句话:'可以爬下来'
av_catalog["大陆"]["1024"][0] = "可以爬下来,全部免费,真好,好人一生平安"
print(av_catalog)

4、有字符串"k:1|k1:2|k2:3|k3:4"处理成字典{'k': 1, 'k1': 2....}(升级题)
str = "k:1|k1:2|k2:3|k3:4"
str_list = str.split("|")
dic = dict()
for i in str_list:
k,v = el.split(":")
dic[k] = int(v)
print(dic)
解包在元组列表上有效

5、元素分类
有如下值li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90],将所有大于66的值保存至字典的第一个key中,将小于
66的值保存至第二个key的值中。
即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}

dic = {"k1":[],"k2":[]}
li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
for i in li:
if i < 66:
dic["k1"].append(i)
else:
dic["k2"].append(i)
print(dic)


6、输出商品列表,用户输入序号,显示用户选中的商品(升级题)

商品列表:
goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ]

要求:
1:页面显示序号 + 商品名称 + 商品价格,如:
1 电脑 1999
2 鼠标 10

2:用户输入选择的商品序号,然后打印商品名称及商品价格
3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。

1、



goods_list = list()
while 1:
print("_*="*10)
for i,k in enumerate(goods,1):
print("%s %s %s"%(i,k["name"],k["price"]))
choice = input("请输入选择的商品号(q or Q 退出)>>: ").strip()
if choice.isdigit():
choice = int(choice)
if choice in range(1,5):
goods_list.append(goods[choice - 1])
print("您的购物车列表有:")
for i in goods_list:
print("%s %s" % (i["name"], i["price"]))
elif choice.upper() == "Q":
break
else:
print("输入无效,请重新输入!")









原文地址:https://www.cnblogs.com/alvin-jie/p/9851020.html