【问题标题】:How to get all data from set如何从集合中获取所有数据
【发布时间】:2022-09-22 20:51:46
【问题描述】:

所以,这是我在列表中的数据

[(\'AED\', Decimal(\'3.67303\')), (\'AFN\', Decimal(\'89.408409\')), (\'ALL\', Decimal(\'118.735882\')), (\'AMD\', Decimal(\'420.167855\')), (\'ANG\', Decimal(\'1.803593\')), (\'AOA\', Decimal(\'431.906\'))]

我这样做了,但只针对第一个元素:Currency: AED, Value: 3.67303

 for key, val in query:
    return f\'Currency: {key}, Value: {val}\'

我怎样才能为所有人做到这一点?

  • 太多的值要解压(预计 2)@Guy
  • 该代码中没有设置

标签: python list set


【解决方案1】:

如果您想从函数返回所有内容,请创建一个带有列表推导的新列表

def func():
    lst = [('AED', Decimal('3.67303')), ('AFN', Decimal('89.408409')), ('ALL', Decimal('118.735882')), ('AMD', Decimal('420.167855')), ('ANG', Decimal('1.803593')), ('AOA', Decimal('431.906'))]
    return [f'Currency: {key}, Value: {val}' for key, val in lst]

或使用yield 创建生成器

def func():
    lst = [('AED', Decimal('3.67303')), ('AFN', Decimal('89.408409')), ('ALL', Decimal('118.735882')), ('AMD', Decimal('420.167855')), ('ANG', Decimal('1.803593')), ('AOA', Decimal('431.906'))]
    for key, val in lst:
        yield f'Currency: {key}, Value: {val}'

另一种创建生成器的不太明确的方法

def func():
    lst = [('AED', Decimal('3.67303')), ('AFN', Decimal('89.408409')), ('ALL', Decimal('118.735882')), ('AMD', Decimal('420.167855')), ('ANG', Decimal('1.803593')), ('AOA', Decimal('431.906'))]
    return (f'Currency: {key}, Value: {val}' for key, val in lst)

输出

for val in func():
    print(val)

Currency: AED, Value: 3.67303
Currency: AFN, Value: 89.408409
Currency: ALL, Value: 118.735882
Currency: AMD, Value: 420.167855
Currency: ANG, Value: 1.803593
Currency: AOA, Value: 431.906

【讨论】:

    【解决方案2】:

    尝试:

    from decimal import Decimal
    a = [('AED', Decimal('3.67303')), ('AFN', Decimal('89.408409')), ('ALL', Decimal('118.735882')), ('AMD', Decimal('420.167855')), ('ANG', Decimal('1.803593')), ('AOA', Decimal('431.906'))]
    
    for i in a:
        print(f'Currency: {i[0]}, Value: {i[1]}')
    
    Currency: AED, Value: 3.67303
    Currency: AFN, Value: 89.408409
    Currency: ALL, Value: 118.735882
    Currency: AMD, Value: 420.167855
    Currency: ANG, Value: 1.803593
    Currency: AOA, Value: 431.906
    

    【讨论】:

      【解决方案3】:

      您的 return 语句会中断循环,因此只会返回第一个元素。

      看起来您想在控制台中打印它?!

      然后只需将行更改为:print('Currency: {key}, Value: {val}')

      当您想用它做其他事情时,请更准确地说,您想做什么。

      【讨论】:

      • 如果我想返回我的所有数据,而不仅仅是第一个元素怎么办?
      • 如果要返回所有数据,则必须将所有数据附加到 list 并返回列表。
      • @makim 你的名单您的所有数据
      【解决方案4】:

      您可以返回格式字符串列表,然后通过解压缩该列表来打印它们。像这样:

      from decimal import Decimal
      
      query = [('AED', Decimal('3.67303')), ('AFN', Decimal('89.408409')), ('ALL', Decimal('118.735882')), ('AMD', Decimal('420.167855')), ('ANG', Decimal('1.803593')), ('AOA', Decimal('431.906'))]
      
      def data(q):
          return [f'Currency={c}, value={v}' for c, v in q]
      
      print(*data(query), sep='\n')
      

      输出:

      Currency=AED, value=3.67303
      Currency=AFN, value=89.408409
      Currency=ALL, value=118.735882
      Currency=AMD, value=420.167855
      Currency=ANG, value=1.803593
      Currency=AOA, value=431.906
      

      【讨论】:

        猜你喜欢
        • 2021-09-18
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 2016-07-03
        • 2021-06-19
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        相关资源
        最近更新 更多