我很喜欢Groovy处理集合和字典的方式,代码可读性很强,语法也很丰富。
具体来说,就是“spread-dot”运算符。它所做的是创建一个新的集合,该集合仅由所有子级的指定属性组成,例如
A = [
{ "a": "1", "b": "2"},
{ "a": "3", "b": "4"},
{ "a": "5", "b": "6"}
]
B = A*.b
B是[“2”、“4”、“6”]
Python的直接等效函数为[a.b for a in A]
但使用起来很笨拙
有没有更好、更易读的方法?
在上面的例子中,情况并不坏,因为它只是一个级别,但是考虑一下这个
response.json().data.ConfigRecords.page.records*.ASV
与
[a['ASV'] for a in response.json()['data']['ConfigRecords']['page']['records']]
1条答案
按热度按时间gwo2fgha1#
使用标准列表/字典,您需要
[row["b"] for row in A]
对我来说,这不是一个很好读的代码。
结果:
但如果使用
pandas.DataFrame
,则可以使用A.b
或A["b"]
。最后,它可能需要
.tolist()
才能得到list
,而不是pandas.Series
。结果:
它也可以只选择某些行-即具有
a > 2
的行对我来说,更有可读性的是将代码分成三行。