IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python中字典推导式 -> 正文阅读

[人工智能]python中字典推导式

目录

一、字典推导式:

二、语法:

1、语法一:

2、语法二:

三、字典推导式实战:

1、在字典中提取或者修改数据,返回新的字典:

2、在字符串中提取数据,返回新的字典:

3、将字符串 "k:1|k1:2|k2:3|k3:4",处理成字典 {k:1,k1:2,...}:

4、生成一个包含5个随机数的字典:

5、将两个长度相同的列表合并成字典:

6、将key中大小写相同的字母的value值求和:

7、将字典中key、value互换位置:


一、字典推导式:

? ? 字典推导式和列表推导式类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部。

二、语法:

1、语法一:

'''
	new_dictionary = {key_exp:value_exp for key, value in dict.items() if condition}
	字典推导式说明:
    key:dict.items()字典中的key
    value:dict.items()字典中的value
    dict.items():序列
    condition:if条件表达式
    key_exp:在for循环中,如果if条件表达式condition成立(即条件表达式成立),返回对应的key,value当作key_exp,value_exp处理 
    value_exp:在for循环中,如果if条件表达式condition成立(即条件表达式成立),返回对应的key,value当作key_exp,value_exp处理
	这样就返回一个新的字典。
'''

2、语法二:

'''
	{key_exp:value_exp1 if condition else value_exp2 for key, value in dict.items()}
	字典推导式说明:
    key:dict.items()字典中的key 
    value:dict.items()字典中的value 
    dict.items():序列 
    condition:if条件表达式的判断内容 
    value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理
    value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理
'''

三、字典推导式实战:

1、在字典中提取或者修改数据,返回新的字典:

dictionary_1 = {'a': '1234', 'B': 'FFFF', 'c': ' 23432', 'D': '124fgr', 'e': 'eeeee', 'F': 'QQQQQ'}

# 案例一:获取字典中key值是小写字母的键值对
new_dict_1 = {key: value for key, value in dictionary_1.items() if key.islower()} 
new_dict_2 = {g: h for g, h in dictionary_1.items() if g.islower()} 
# g, h只是一个变量,使用任意字母都行,但是一定要前后保持一致。
print(new_dict_1)
print(new_dict_2)

# 案例二:将字典中的所有key设置为小写
new_dict_3 = {key.lower(): value for key, value in dictionary_1.items()}
# 将字典中的所有key设置为小写,value值设置为大写
new_dict_4 = {key.lower(): value.upper() for key, value in dictionary_1.items()}
print(new_dict_3)
print(new_dict_4)

# 案例三:将字典中所有key是小写字母的value统一赋值为'error'
new_dict_5 = {key: value if not key.islower() else 'error' for key, value in dictionary_1.items()} # if条件表达式用到了“非”的逻辑
# value if not key.islower() else 'error' 这一段的代码的含义是:
# 如果not key.islouer()--key值不是小写的,那么返回if前面的value值,否则就返回else后面的值。
print(new_dict_5)

执行结果如下图:

"""
{'a': '1234', 'c': ' 23432', 'e': 'eeeee'}
{'a': '1234', 'c': ' 23432', 'e': 'eeeee'}
{'a': '1234', 'b': 'FFFF', 'c': ' 23432', 'd': '124fgr', 'e': 'eeeee', 'f': 'QQQQQ'}
{'a': '1234', 'b': 'FFFF', 'c': ' 23432', 'd': '124FGR', 'e': 'EEEEE', 'f': 'QQQQQ'}
{'a': 'error', 'B': 'FFFF', 'c': 'error', 'D': '124fgr', 'e': 'error', 'F': 'QQQQQ'}
"""

2、在字符串中提取数据,返回新的字典:

# 在爬虫中,我们需要获取cookies并以字典的形式传参,如果cookies是字符串则需要转换为字典,经典代码案例如下:
# 原来的cookies很长,这里截取一部分做演示:
cookies = "anonymid=jy0ui55o-u6f6zd; depovince=GW; _r01_=1; JSESSIONID=abcMktGLRGjLtdhBk7OVw; ick_login=a9b557b8-8138-4e9d-8601-de7b2a633f80"
# 字典推导式,将长的字符串转化为字典。
new_dict_1 = {cookie.split("=")[0]: cookie.split("=")[1] for cookie in cookies.split(";")} 
print(new_dict_1)
"""
代码分析:
在字符串cookies中’=’前面是key,’=’后面是value,每一个’;’构成一个键值对;多个键值对构成一个字典;
1.根据’;’将字符串拆分为列表;
2.根据第一步获取的列表,遍历时将每一个字符串根据’=’再次拆分;
3.根据第二步拆分的结果,列表第一个元素作为key,列表第二个元素作为value;
"""
new_dict_2 = {key: value for t in cookies.split(";") for key, value in (t.split("="),)}
# 先将字符串通过';'分解成短的带有等号的字符串,然后将这个短的字符串转化为元组,最后再通过'='分解成俩个值分别赋给key、value。
print(new_dict_2)
"""
# 下面是分解的演示:
for t in cookies.split(';'):
    print(type(t))
    print((t.split('='),))
    print(type((t.split('='),)))
print(cookies.split(';'))
"""

执行结果如下图:

"""
{'anonymid': 'jy0ui55o-u6f6zd', ' depovince': 'GW', ' _r01_': '1', ' JSESSIONID': 'abcMktGLRGjLtdhBk7OVw', ' ick_login': 'a9b557b8-8138-4e9d-8601-de7b2a633f80'}
{'anonymid': 'jy0ui55o-u6f6zd', ' depovince': 'GW', ' _r01_': '1', ' JSESSIONID': 'abcMktGLRGjLtdhBk7OVw', ' ick_login': 'a9b557b8-8138-4e9d-8601-de7b2a633f80'}
"""

3、将字符串 "k:1|k1:2|k2:3|k3:4",处理成字典 {k:1,k1:2,...}:

str = "k:1|k1:2|k2:3|k3:4"
new_dict_1 = {key: value for t in str.split('|') for key, value in (t.split(':'),)}
print(new_dict_1)

new_dict_2 = {str_part.split(":")[0]: str_part.split(":")[1] for str_part in str.split('|')}
print(new_dict_2)

# 可以用for循环将字符串转化成字典
new_dict_3 ={}
for i in str.split('|'):
    # new_dict_3[i.split(":")[0]] = i.split(":")[1]
    key, value = i.split(':')
    new_dict_3[key] = value
print(new_dict_3)

执行结果如下图:

"""
{'k': '1', 'k1': '2', 'k2': '3', 'k3': '4'}
{'k': '1', 'k1': '2', 'k2': '3', 'k3': '4'}
{'k': '1', 'k1': '2', 'k2': '3', 'k3': '4'}
"""

4、生成一个包含5个随机数的字典:

# 生成一个包含5个随机数的字典
import random
new_dict_1 = {key:random.randint(10, 100) for key in range(1,6)}
print(new_dict_1)

执行结果如下图:

"""
{1: 65, 2: 60, 3: 54, 4: 29, 5: 53}
"""

5、将两个长度相同的列表合并成字典:

# 将两个长度相同的列表合并成字典
name = ['zhangsan', 'lisi', 'wangwu', 'maliu']
sign = ['双鱼座', '天蝎座', '水瓶座', '巨蟹座']
new_dict_2 = {name: value for name, value in zip(name, sign)}
print(new_dict_2)
print(type(zip(name,sign)))

执行结果如下图;

"""
{'zhangsan': '双鱼座', 'lisi': '天蝎座', 'wangwu': '水瓶座', 'maliu': '巨蟹座'}
<class 'zip'>
"""

6、将key中大小写相同的字母的value值求和:

# 将key中大小写相同的字母的value值求和
dict_a = {'a': 2, 'B': 5, 'A': 7, 'C': 10}
new_dict_1 = {key.lower(): dict_a.get(key.lower(), 0) + dict_a.get(key.upper(), 0) for key in dict_a.keys() if key.lower() in ['a', 'b']}
print(new_dict_1)

执行结果如下图:

"""
{'a': 9, 'b': 5}
"""

7、将字典中key、value互换位置:

# 将字典中key、value互换位置
d = {1: 'a', 2: 'b', 3: 'c'}
dd = {key: value for value, key in d.items()}
print(d)
print(dd)

执行结果如下图:

"""
{1: 'a', 2: 'b', 3: 'c'}
{'a': 1, 'b': 2, 'c': 3}
"""

总结:全是字典推导式的实例,一定可以理解字典推导式。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:02:47  更:2022-03-06 13:06:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:45:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码