Python列表生成式和字典生成式实例

 更新时间:2024年06月21日 10:40:30   作者:程序员的战歌  
这篇文章主要介绍了Python列表生成式和字典生成式实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

列表生成式

格式

[ x  for  x in 可迭代对象]
[ x  for  x in 可迭代对象 if 条件]

1. 把要生成的元素 x 放到前面,执行的时候,先执行后面的for循环。

2. 后面跟上for循环,可以有多个for循环,也可以在for循环后面再加个if条件。

3. for循环后面可以是任何方式的迭代器(元组/列表/生成器..),只要可迭代对象的元素中至少有一个值。

例1:最简单的

In [1]: [x for x in 'abcd']
Out[1]: ['a', 'b', 'c', 'd']

例2:加if判断

In [1]: res = [10,11,12,13]
In [2]: [x for x in res if x > 10]
Out[2]: [11, 12, 13]

原生实现:
In [1]: arr = []
In [2]: for x in res:
  ....:     if x > 10:
  ....:         arr.append(x)
  ....:         
In [3]: arr
Out[3]: [11, 12, 13]

例3:迭代字典生成列表

print [v for k,v in {'a':'one','b':'two'}.items()]
输出:['one', 'two']

print [(k,v) for k,v in {'a':'one','b':'two'}.items()]
输出:[('a', 'one'), ('b', 'two')]

print [k+'='+v for k,v in {'name':'lyz','age':'26','job':'IT'}.items()]
输出:['job=IT', 'age=26', 'name=lyz']

字典生成式

格式

1. 在Python2.6或更早的版本,字典生成器可以接受迭代的键/值对。

d = dict((key, value) for (key, value) in iterable)

说明:

第一个k,v的()必须写,第二个()可不写。

2.6版本就是利用dict()函数,函数的参数是一个嵌套的序列,序列的元素是元组。

2. 从Python2.7或者3以后,你可以直接用字典推导式语法。

d = {key: value for (key, value) in iterable} # k,v的()可以不写

3. python2.7以上兼容两种写法,python2.6只能用第一种。

4. 可以用任何方式的迭代器(元组,列表,生成器..),只要可迭代对象的元素中有两个值。

python2.7写法

dict1 = {'one':1,'two':2,'three':3}
dict2 = {v:k for k,v in dict1.items()}
print dict2
输出:
{1: 'one', 2: 'two', 3: 'three'}

python2.6写法

dict1 = {'one':1,'two':2,'three':3}
dict3 = dict((v,k) for k,v in dict1.items())
print dict3
输出:
{1: 'one', 2: 'two', 3: 'three'}

例1:两种生成式方式生成字典

In [1]: arr=['wd','18','nan']
In [2]: dict((k,v) for k,v in enumerate(arr))
Out[2]: {0: 'wd', 1: '18', 2: 'nan'}
In [3]: {k:v for k,v in enumerate(arr)}
Out[3]: {0: 'wd', 1: '18', 2: 'nan'}

例2:线上实例

arr = [{'id':1,'name':'lyz','age':26},{'id':2,'name':'pc','age':30}]
print {str(x['id']):x['name'] for x in arr}
执行结果:
{'1': 'lyz', '2': 'pc'}

其他生成字典的方法

1. dict()函数

嵌套元组和嵌套类别可以直接通过dict命令转为字典(嵌套内部的元素只能是2个)

>>> a = [(1, 'ab'), (2, 'bc')]
>>> dict(a)
{1: 'ab', 2: 'bc'}

>>> result = ((1, 'ab'), (2, 'bc'))
>>> dict(result)
{1: 'ab', 2: 'bc'}

2. zip()函数

将多个元组或列表合并,合并规则是每个元组元素个数一致

In [1]: zip(('name','age','sex'),('wd','18','nan'))
Out[1]: [('name', 'wd'), ('age', '18'), ('sex', 'nan')]

In [2]: zip(['name','age','sex'],['wd','18','nan'])
Out[2]: [('name', 'wd'), ('age', '18'), ('sex', 'nan')]

In [3]: dict(zip(('name','age','sex'),('wd','18','nan')))  # 生产环境最常用
Out[3]: {'age': '18', 'name': 'wd', 'sex': 'nan'}

In [4]: zip(['name','age','sex'],['wd','18','nan'],['11',22])  # 列表元素个数不一致,以最少对列表为准
Out[4]: [('name', 'wd', '11'), ('age', '18', 22)]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python聚类算法之基本K均值实例详解

    Python聚类算法之基本K均值实例详解

    这篇文章主要介绍了Python聚类算法之基本K均值运算技巧,结合实例形式较为详细的分析了基本K均值的原理与相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Python 添加文件注释和函数注释操作

    Python 添加文件注释和函数注释操作

    这篇文章主要介绍了Python 添加文件注释和函数注释操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • python打开网页和暂停实例

    python打开网页和暂停实例

    这篇文章主要介绍了python打开网页和暂停实例,涉及webbrowser模块与os模块的使用,是非常具有实用价值的一个技巧,需要的朋友可以参考下
    2014-09-09
  • python json-rpc 规范源码阅读

    python json-rpc 规范源码阅读

    这篇文章主要为大家介绍了python json-rpc 规范的源码阅读,以及jsonrpcclient与jsonrpcserver的实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • python实现的web监控系统

    python实现的web监控系统

    这篇文章主要介绍了python实现的web监控系统,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • python3 logging日志封装实例

    python3 logging日志封装实例

    这篇文章主要介绍了python3 logging日志封装实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python实现根据ip地址反向查找主机名称的方法

    python实现根据ip地址反向查找主机名称的方法

    这篇文章主要介绍了python实现根据ip地址反向查找主机名称的方法,涉及Python使用socket解析IP的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 利用python编写自动整理下载目录工具

    利用python编写自动整理下载目录工具

    经常用电脑的一定会遇到这种情况:每天我们都在从浏览器、微信、钉钉里下各种文件,什么截图、合同、安装包、临时文档,全都堆在下载文件夹里,结果某天想找一个发票 PDF 找了快十分钟,才找到,所以本文给大家分享如何利用python编写一个自动整理下载目录工具
    2025-05-05
  • 对Python中画图时候的线类型详解

    对Python中画图时候的线类型详解

    今天小编就为大家分享一篇对Python中画图时候的线类型详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python 切分数组实例解析

    Python 切分数组实例解析

    这篇文章主要介绍了Python 切分数组实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论