Files
2025PY/day23/02-字典推导式的案例.py
2025-05-22 16:50:44 +08:00

130 lines
4.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 案例一
# dictionary = {'a': '1234', 'B': 'FFFF', 'c': ' 23432', 'D': '124fgr', 'e': 'eeeee', 'F': 'QQQQQ'}
# 1获取字典中key值是小写字母的键值对
# print(dictionary.items())
#[('a', '1234'), ('B', 'FFFF'), ('c', ' 23432'), ('D', '124fgr'), ('e', 'eeeee'), ('F', 'QQQQQ')]
# newdict = {key:value for key,value in dictionary.items() if key.islower()} # key:字典中的每一个键 value:每一个值
# print(newdict) # {'a': '1234', 'c': ' 23432', 'e': 'eeeee'}
# 2将字典中的所有key设置为小写
# newdict = {key.lower():value for key,value in dictionary.items()}
# print(newdict)
# {'a': '1234', 'b': 'FFFF', 'c': ' 23432', 'd': '124fgr', 'e': 'eeeee', 'f': 'QQQQQ'}
# 3将字典中所有key是小写字母的value统一赋值为'error'
# 思路:
# 正常输出的是key为大写字母的
# not:取反
# not key.islower():不是小写字母
# newdict = {key:value if not key.islower() else 'error' for key,value in dictionary.items()}
# print(newdict)
# {'a': 'error', 'B': 'FFFF', 'c': 'error', 'D': '124fgr', 'e': 'error', 'F': 'QQQQQ'}
# 案例二
# 将下面的字符串转换成字典
# 思路:
# cookie字符串有规律的每一组值后面都有= 然后通过; 连接起来
# cookies = "anonymid=jy0ui55o-u6f6zd; depovince=GW; _r01_=1; JSESSIONID=abcMktGLRGjLtdhBk7OVw; ick_login=a9b557b8-8138-4e9d-8601-de7b2a633f80"
# print(cookies.split('; ')) # 利用规律将字符串拆分成列表
# ['anonymid=jy0ui55o-u6f6zd', 'depovince=GW', '_r01_=1', 'JSESSIONID=abcMktGLRGjLtdhBk7OVw', 'ick_login=a9b557b8-8138-4e9d-8601-de7b2a633f80']
# 将上面的拆分的列表继续变成元组,然后解构成字典的键值对
# str = 'anonymid=jy0ui55o-u6f6zd'
# print(str.split('=')) # ['anonymid', 'jy0ui55o-u6f6zd']
# print((str.split('='),)) # (['anonymid', 'jy0ui55o-u6f6zd'],) 注意逗号,如果元组只有一项值,必须添加逗号
# dict = {key:value for item in cookies.split('; ') for key,value in (item.split('='),)}
# print(dict)
"""
{
'anonymid': 'jy0ui55o-u6f6zd',
'depovince': 'GW',
'_r01_': '1',
'JSESSIONID': 'abcMktGLRGjLtdhBk7OVw',
'ick_login': 'a9b557b8-8138-4e9d-8601-de7b2a633f80'
}
"""
# 案例二(换一种写法)
# cookies = "anonymid=jy0ui55o-u6f6zd; depovince=GW; _r01_=1; JSESSIONID=abcMktGLRGjLtdhBk7OVw; ick_login=a9b557b8-8138-4e9d-8601-de7b2a633f80"
# dict = {}
# list = cookies.split('; ')
# for item in list:
# dict[item.split('=')[0]] = item.split('=')[1]
# print(dict)
# 推导式实现
# print({item.split('=')[0]:item.split('=')[1] for item in cookies.split('; ')})
# 案例三
# 将字符串转换成字典
# str = "k:1|k1:2|k2:3|k3:4"
# 将字符串转换成字典需要两步
# 第一步:将字符串拆分成列表['k:1','k1:2','k2:3','k3:4']
# 第二步:将列表的每一项继续通过冒号拆分成两项,第一项就是键,第二项就是值
# print({item.split(':')[0] : item.split(':')[1] for item in str.split('|')})
# {'k': '1', 'k1': '2', 'k2': '3', 'k3': '4'}
# print({key:value for item in str.split('|') for key,value in (item.split(':'),)})
# 注意后面的for循环转换成元组
# {'k': '1', 'k1': '2', 'k2': '3', 'k3': '4'}
# 案例四
# 生成一个包含5个随机数的字典
# import random # 导入内置的模块
# print(random.randint(1,100)) # 生成随机数
# print({i : random.randint(1,100) for i in range(1,6)})
# {1: 66, 2: 16, 3: 56, 4: 16, 5: 79}
# 案例五
# 将两个长度相同的列表合并成字典
# name = ['zhangsan', 'lisi', 'wangwu', 'maliu']
# sign = ['双鱼座', '天蝎座', '水瓶座', '巨蟹座']
# 思路:利用元组解构字典的键值对,需要将上面的两个列表变成元组
# print(tuple(zip(name,sign)))
# (('zhangsan', '双鱼座'), ('lisi', '天蝎座'), ('wangwu', '水瓶座'), ('maliu', '巨蟹座'))
# print(list(zip(name,sign)))
# [('zhangsan', '双鱼座'), ('lisi', '天蝎座'), ('wangwu', '水瓶座'), ('maliu', '巨蟹座')]
# print({name:value for name,value in tuple(zip(name,sign)) })
# {'zhangsan': '双鱼座', 'lisi': '天蝎座', 'wangwu': '水瓶座', 'maliu': '巨蟹座'}
# print({name:value for name,value in list(zip(name,sign)) })
# {'zhangsan': '双鱼座', 'lisi': '天蝎座', 'wangwu': '水瓶座', 'maliu': '巨蟹座'}
# 案例六
# 将key中大小写相同的字母的value值求和
# dict = {'a': 2, 'B': 5, 'A': 7, 'C': 10,'b':10}
# lower() upper()
# in
# print({key.lower():dict.get(key.lower(),0) + dict.get(key.upper(),0) for key in dict.keys() if key.lower() in ['a','b','c']})
# {'a': 9, 'b': 5, 'c': 10}
# # 案例七
# 将字典中key、value互换位置
# 将字典转换成能够被解构的元组
d = {1: 'a', 2: 'b', 3: 'c'}
print({value:key for key,value in d.items()})