python 3.4 list comprehension-在列表中调用临时变量

Cryssie

我有一个字典列表,我想根据某些条件提取某些数据。如果货币显示的是美元且大于0,我只想提取货币(以int / float表示)。

curr = [{'currency': '6000.0000,EUR', 'name': 'Bob'}, 
        {'currency': '0.0000,USD', 'name': 'Sara'}, 
        {'currency': '2500.0000,USD', 'name': 'Kenny'}, 
        {'currency': '0.0000,CND', 'name': 'Debbie'}, 
        {'currency': '2800.0000,USD', 'name': 'Michael'}, 
        {'currency': '1800.0000,CND', 'name': 'Aaron'}, 
        {'currency': '2500.0000,EUR', 'name': 'Peter'}]

结果:

usd_curr = [2500.0000, 2800.0000]

这就是我所做的。

usd_curr = [line for line in data if ',USD' in line['currency']]
usd_curr = [float(elem['currency'].split(',')[0]) for elem in curr if float(elem['currency'].split(',')[0]) > 0]

该列表有效,但是我的问题确实是这样-是否有更好的方法在列表推导中使用变量,因此它看起来像这样:

usd_curr = [var = float(elem['currency'].split(',')[0]) for elem in curr if var > 0] 
杰夫·梅卡多(Jeff Mercado)

没有什么好的语法可以使用理解来做到这一点。您可以使用内部生成器生成用于减少重复次数的值,但是复杂度越高,它就会变得真正难以读取。

usd_curr = [
    float(val)
    for val, val_type in (elem['currency'].split(',') for elem in curr)
    if val_type == 'USD' and float(val) > 0
]

我建议改用命名生成器。

def get_currency_by_type(curr, curr_type):
    for elem in curr:
        val, val_type = elem['currency'].split(',')
        if val_type == curr_type and float(val) > 0:
            yield float(val)

usd_curr = list(get_currency_by_type(curr, 'USD'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python list comprehension double for

python list comprehension double for

python list comprehension:从列表列表中的每个列表制作多个项目的列表

List Comprehension如何在Python中完全起作用?

使用map或comprehension list python从全局变量创建词典列表

Python3 .4中List的格式化结果

python list comprehension返回基于字母的名称

列表列表中的Dict Comprehension python

无法在Python 3中打印列表(range(4 ** 4 ** 4))

使用List Comprehension(Pandas)从DataFrames列表中删除DataFrame的列

Python List Comprehension-从嵌套数据中提取

將 for 循環轉換為 List Comprehension Python

Python 3中list()和[]之间的区别

python list仅当使用list comprehension完全匹配时才替换

Python List Comprehension:将一个列表中的字符串附加到另一个列表中的字符串开头,以获得列表列表

如何转换list1中的list = [1,2,[3,4],[5,6],7,[8,9,10]] = [1,2,3,4,5,6,7,8 ,9,10]在python中?

如何从python中原始列表大小的3/4的列表中创建一个新列表?

python中[:,3]和[:,3:4]之间的区别?

Advanced Nested List Comprehension Syntax

list-comprehension引发RuntimeError

python list comprehension在一次迭代中产生两个值

python dict和list comprehension用作switch语句-不能按预期工作

引用数组的多个值时,使用 Python List Comprehension 排除重复项

尝试使用3个列表在python的第4个列表中迭代和存储数据

尝试在Python 3中调用数组(列表)中的范围

从QPushButton调用Python3 PyQt4

在Python中的for循环中调用列表变量

在 Python 中如何使用变量调用列表?

在python3中编辑多个列表中的多个变量