当前位置:   article > 正文

python中列表、字典和集合推导式_python列表和字典组合

python列表和字典组合

1、列表推导式

        ⽤⼀个表达式创建⼀个有规律的列表或控制⼀个有规律列表,又叫列表生成式。

1.1 简单的列表推导式

需求:创建⼀个 0-10 的列表。
示例代码: 【while循环实现】
  1. # 1. 准备⼀个空列表
  2. list1 = []
  3. # 2. 书写循环,依次追加数字到空列表list1中
  4. i = 0
  5. while i < 10:
  6. list1.append(i)
  7. i += 1
  8. print(list1)
运行结果:

 示例代码:【for循环实现】

  1. list1 = []
  2. for i in range(10):
  3. list1.append(i)
  4. print(list1)

运行结果:

 

 示例代码:【列表推导式实现】

  1. list1 = [i for i in range(10)]
  2. print(list1)

运行结果:

 

1.2 if的列表推导式

需求:创建 0-10 的偶数列表
示例代码: 【range()步⻓实现】
  1. list1 = [i for i in range(0, 10, 2)]
  2. print(list1)
运行结果:
示例代码: 【if实现】
  1. list1 = [i for i in range(10) if i % 2 == 0]
  2. print(list1)

运行结果:

1.3 多个for循环实现列表推导式

需求:创建列表如下:
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
示例代码:
  1. # 【先执行前面的for循环】
  2. lst = [(i, j) for i in range(7, 9) for j in range(3)]
  3. print(lst)

运行结果:

2字典推导式

        快速合并列表为字典或提取字典中⽬标数据。

如下面两个列表,可以使用字典推导式快速合并为一个字典格式。
  1. list1 = ['name', 'age', 'gender']
  2. list2 = ['Tom', 20, 'man']

2.1 创建⼀个字典:字典key1-5数字,value是这个数字的2次⽅。

示例代码:
  1. dict1 = {i: i ** 2 for i in range(1, 5)}
  2. print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16}

 运行结果:

2.2 将两个列表合并为⼀个字典

示例代码:
  1. list1 = ['name', 'age', 'gender']
  2. list2 = ['Tom', 20, 'man']
  3. dict1 = {list1[i]: list2[i] for i in range(len(list1))}
  4. print(dict1)

运行结果:

 

2.3 提取字典中⽬标数据

示例代码:
  1. counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
  2. # 需求:提取上述电脑数量⼤于等于200的字典数据
  3. count1 = {key: value for key, value in counts.items() if value >= 200}
  4. print(count1) # {'MBP': 268, 'DELL': 201}

运行结果:

 

2.4 将多个键相同值不同的字典合并为一个字典

示例代码:

  1. # 数据类型一
  2. dic1 = {'aa': {'AA': 4}, 'bb': {'BB': 6}}
  3. dic2 = {'aa': {'CC': 9}, 'bb': {'DD': 0}}
  4. print(set(dic1) | set(dic2))
  5. dic = {key: {**dic1.get(key), **dic2.get(key)} for key in set(dic1) | set(dic2)}
  6. print(dic)
  7. # 数据类型二
  8. dic1 = {'aa': 4, 'bb': 6}
  9. dic2 = {'aa': 9, 'bb': 0}
  10. print(set(dic1) | set(dic2))
  11. dic = {key: {dic1.get(key), dic2.get(key)} for key in set(dic1) | set(dic2)}
  12. print(dic)

运行结果:

2.5 将多个键不同且值不同的字典合并为一个字典

示例代码:

  1. # 数据类型一
  2. dic1 = {'cc': {'AA': 4}, 'ee': {'BB': 6}}
  3. dic2 = {'ff': {'CC': 9}, 'ee': {'DD': 0}}
  4. print(set(dic1) | set(dic2))
  5. # 下面这种情况get里面要加默认值,否则会报错
  6. dic = {key: {**dic1.get(key, {}), **dic2.get(key, {})} for key in set(dic1) | set(dic2)}
  7. print(dic)
  8. # 数据类型二
  9. dic1 = {'cc': 4, 'ee': 6}
  10. dic2 = {'ff': 9, 'ee': 0}
  11. print(set(dic1) | set(dic2))
  12. # 下面这种情况get里面要加默认值,否则会报错
  13. dic = {key: {dic1.get(key), dic2.get(key)} for key in set(dic1) | set(dic2)}
  14. print(dic)

运行结果:

2.6 交换字典key和value值

示例代码:

  1. # 字典推导式
  2. dic = {"name": "dgw", "age": 25, "sex": "男"}
  3. print(dic)
  4. # 交换字典key和value的值
  5. dic2 = {value: key for key, value in dic.items()}
  6. print(dic2)
  7. # {'name': 'dgw', 'age': 25, 'sex': '男'}
  8. # {'dgw': 'name', 25: 'age', '男': 'sex'}

运行结果:

​​​​​​​

3集合推导式

3.1 创建⼀个集合,数据为下⽅列表的2次⽅。

list1 = [1, 1, 2]
示例代码: 【注意:集合有数据去重功能。】
  1. list1 = [1, 1, 2]
  2. set1 = {i ** 2 for i in list1}
  3. print(set1) # {1, 4}

运行结果:

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号