[root@bigdata script_ce]# python3
Python 3.7.3 (default, Oct 23 2019, 17:27:01)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> bob = dict(name='Bob Smith',age=42,pay=30000,job='dev')
>>> sue = dict(name='Sue Jones',age=45,pay=40000,job='hdw')
>>> bob
{'name': 'Bob Smith', 'age': 42, 'pay': 30000, 'job': 'dev'}
>>> sue
{'name': 'Sue Jones', 'age': 45, 'pay': 40000, 'job': 'hdw'}
>>>
>>> people = [bob,sue]
>>> for person in people:
... print(person['name'],person['pay'],sep=',')
...
Bob Smith,30000
Sue Jones,40000
>>> for person in people:
... if person['name']=='Sue Jones':
... print(person['pay'])
...
40000
>>>

>>> names = [person['name'] for person in people]
>>> names
['Bob Smith', 'Sue Jones']

>>> list(map((lambda x: x['name']),people))
['Bob Smith', 'Sue Jones']
![]()
>>> sum(person['pay'] for person in people)
70000

列表解析和按需生成器表达式这样的工具,可以达到类似sql查询的效果,只是这里操作的是内存中的对象.
#类似SQL查询
>>> [rec['name'] for rec in people if rec['age'] >=45]
['Sue Jones']

>>> [(rec['age']** 2 if rec['age']>=45 else rec['age'])for rec in people]
[42, 2025]

>>> G = (rec['name'] for rec in people if rec['age'] >= 45)
>>> next(G)
'Sue Jones'

>>> G = ((rec['age']** 2 if rec['age'] >= 45 else rec['age']) for rec in people)
>>> G.__next__()
42

字典是通常用的Python对象,所以这些记录也可以使用通常的Python语法进行访问和更新.
>>> for person in people:
... print(person['name'].split()[-1])
...
Smith
Jones

>>> person['pay']*=1.10
>>>
>>> for person in people:print(person['pay'])
...
30000
44000.0

本文介绍如何使用Python进行数据处理,包括创建字典记录、列表解析、生成器表达式以及操作和更新字典对象的方法。通过具体示例展示了如何查询、筛选和计算数据,类似于SQL查询效果,但操作的是内存中的对象。
825

被折叠的 条评论
为什么被折叠?



