列表和字典组合练习
1.给name_list对应的列表追加一个值:赵六
dic ={'name_list':['张三','python','王五'],1:{'name':'西施','age':25,'sex':'女'},(1,2):[100,{'ip':'192.168.1.1','port':3306}]}
dic['name_list'].append("赵六")
print(dic)#{'name_list': ['张三', '李四', '王五', '赵六'], 1: {'name': '西施', 'age': 25, 'sex': '女'}, (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]}
2.将name_list对应的python全部变成大写
dic ={'name_list':['张三','python','王五'],1:{'name':'西施','age':25,'sex':'女'},(1,2):[100,{'ip':'192.168.1.1','port':3306}]}
dic['name_list'][1] = dic['name_list'][1].upper()
print(dic)#{'name_list': ['张三', 'PYTHON', '王五'], 1: {'name': '西施', 'age': 25, 'sex': '女'}, (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]}
3.将1对应的字典添加一个键值对:weight:75
dic ={'name_list':['张三','python','王五'],1:{'name':'西施','age':25,'sex':'女'},(1,2):[100,{'ip':'192.168.1.1','port':3306}]}
dic[1]['weight'] = 75
print(dic)#{'name_list': ['张三', 'python', '王五'], 1: {'name': '西施', 'age': 25, 'sex': '女', 'weight': 75}, (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]}
4.将1对应的字典name名称西施换成’王昭君‘
dic ={'name_list':['张三','python','王五'],1:{'name':'西施','age':25,'sex':'女'},(1,2):[100,{'ip':'192.168.1.1','port':3306}]}
dic[1]['name'] = '王昭君'
print(dic)#{'name_list': ['张三', 'python', '王五'], 1: {'name': '王昭君', 'age': 25, 'sex': '女'}, (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]}
5.将{'ip': '192.168.1.1', 'port': 3306}此字典的port键值对删除
dic ={'name_list':['张三','python','王五'],1:{'name':'西施','age':25,'sex':'女'},(1,2):[100,{'ip':'192.168.1.1','port':3306}]}
del dic[(1,2)][1]['port']
print(dic)#{'name_list': ['张三', 'python', '王五'], 1: {'name': '西施', 'age': 25, 'sex': '女'}, (1, 2): [100, {'ip': '192.168.1.1'}]}
列表的使用:
1.将列表的每个元素用“_”拼接成一个字符串
#01 将列表的每个元素用“_”拼接成一个字符串
li = ["python","java","html","css"]
st = ''
count = 0
for i in li:
count += 1
if count< len(li):
st = st + i+"_"
else:
st = st + i
print(st)#python_java_html_css
#第二种方法
count = 0
for i in li:
count +=1
if count < len(li):
print(i+"_",end='')
else:
print(i)
#第三种方法
print('_'.join(li)) #python_java_html_css
2 利用for循环和range找出100以内所有偶数并将这些偶数插入到一个新的列表中
lis = []
for i in range(1,101):
if i % 2 ==0:
lis.append(i)
print(lis)
3.利用for循环和range从100~1
for i in range(100,0,-1):
print(i)
4.利用for循环和range,将1-30的数字一次添加到列表中,并循环这个列表,将能被三整除的数改为"*"
li = []
for i in range(1,31):
li.append(i)
if i % 3 ==0:
li[i-1] = '*' #为什么是i - 1 ,因为索引是从0开始的
print(li) #[1, 2, '*', 4, 5, '*', 7, 8, '*', 10, 11, '*', 13, 14, '*', 16, 17, '*', 19, 20, '*', 22, 23, '*', 25, 26, '*', 28, 29, '*']
# 方法二
li =[]
for i in range(1,31):
li.append(i)
if i % 3 ==0:
li.remove(i) #先按索引位置删除
li.insert(i,"*") #后插入,索引位置
print(li)#[1, 2, '*', 4, 5, '*', 7, 8, '*', 10, 11, '*', 13, 14, '*', 16, 17, '*', 19, 20, '*', 22, 23, '*', 25, 26, '*', 28, 29, '*']
5. 查找列表li中的元素,移除每个元素的空格,并找出以“A”或者“a”开头,并以“c“结尾的所有元素,并添加到一个新的列表中,最后循环打印这个新列表
li = ["TaiBai ","alexC","ABC ","egon","riTian","wusir"," aqc"]
newlist =[]
for i in li:
i = i.strip()
if i.upper().startswith('A') and i.endswith('c'):
newlist.append(i)
print(newlist)
6.元素分类
#有如下值 li = [11,22,33,44,55,66,77,88,99,90]
#将所有大于66的值保存至字典的第一个key中,将小于66保存到第二个key值中
li = [11,22,33,44,55,66,77,88,99,90]
dic = {}
for key in li:
if key >66:
if dic.get('k1'): #判断有没有k1
dic['k1'].append(key) #如果有k1键,那么就把大于66的数添加进去成为值
else:
dic['k1'] = [key] #添加键值对.如果加双引号就代表字符串了,不是变量key
if key <66:
if dic.get('k2'): #判断有没有k1
dic['k2'].append(key) #如果有k1键,那么就把大于66的数添加进去成为值
else:
dic['k2'] = [key] #添加键值对.如果加双引号就代表字符串了,不是变量key
print(dic)#{'k2': [11, 22, 33, 44, 55], 'k1': [77, 88, 99, 90]}
7.删除键含有k的键值对
dic = {"key1":"value1","key2":"value2","key3":"value3","name":"python"}
#在序号字段时,不能做删除,这个要注意,所以我们需要转换一下
#首先把含有k的键找出来,放到一个列表里面
li =[]
for i in dic:
if "k" in i:
li.append(i)
print(li) #['key1', 'key2', 'key3']
#然后根据键删除键值对,而键就从这个列表里面取
for key in li:
dic.pop(key)
print(dic) #{'name': 'python'}
8.输入商品列表,用户输入序号,显示用户选种的商品
'''
1.页面显示
序号+商品名称+商品价格
1 电脑 1999
2 鼠标 99
............
2.用户输入选择的商品序号,然后打印商品名称及商品价格
3.如果用户输入的商品序号有误,则提示输入有误,并重新输入
排除非字母的情况,isdigit() 本来我还准备就用1到4来判断
超过数字范围
4.用户输入q或者Q,退出程序
5.我自己添加了一些功能
'''
goods = [{'name':"电脑","price":1999},
{'name':"鼠标","price":99},
{'name':"游艇","price":29},
{'name':"美女","price":988}]
prt_count = {}
prt = {}
count = 0
while 1:
for i in goods:
print("\t{}\t{}\t{}".format(goods.index(i)+1,i['name'],i['price']))
choice_num = input("请输入>>>").strip()
if choice_num.upper() =='Q':break
if choice_num.isdigit():
if 0<int(choice_num) <= goods.index(i)+1:
print("你打印的商品名称是:",goods[int(choice_num)-1]["name"],"价格是:",goods[int(choice_num)-1]['price'])
#增加一个商品打印单
count += 1
prt[goods[int(choice_num) - 1]["name"]] = goods[int(choice_num)-1]['price']
prt_count[count] = prt #{count:{name:price}}
else:
print("你输入的商品序号没有,请重新输入")
else:
print("您输入的有非数字元素,请重新输入")
prt = {} #清空字典,不然的话,就进行累加了。
print("你已退出")
print(prt_count)
- 运行结果:
最后类型转换:
# 字符串转换为列表 用分隔方法就可以了
st = "python java html"
li = st.split()
print(li) #['python', 'java', 'html']
#list 转换为字符串 此list中的元素全部是str类型
li = ['python', 'java', 'html']
s2 = ' '.join(li)
print(s2) #python java html
# 元组和列表转换
li = [1,2,3]
tul = tuple(li)
print(tul) #(1, 2, 3)
li = list(tul)
print(li) #[1, 2, 3]
# 字典与列表转换
dic = {'name':"python","age":18}
li = list(dic)
print(li) #['name', 'age'] 直接就把字典的键全部拿出来了
以上都是看视频上,根据视频的一些内容,整理出来的笔记,题目都是自己做的。