【问题标题】:Iterating Through Dictionary To Get Value Using Regex使用正则表达式遍历字典以获取价值
【发布时间】:2020-08-29 04:40:09
【问题描述】:

我正在学习 Python,我在 Python 中有这个变量,我想找到利润率和利率的值。

banks = [{'bank_code': 'BANKA',
         'profit_rate': 2.7},
         {'bank_code': 'BANKB',
          'interest_rate': 2.6}]

如果我这样迭代字典:

for i in range(len(banks)):
    rate = banks[i]['profit_rate']
    print(rate)

它只会打印:

2.7

如果我这样迭代字典:

for i in range(len(banks)):
    rate = banks[i]['profit_rate' or 'interest_rate]
    print(rate)

结果会显示错误。

那么我如何迭代并获得利润和利率的价值?有人对我说要使用正则表达式,但我不知道该怎么做。

【问题讨论】:

  • 直接的方法是使用if语句来检查是否存在。
  • 不,正则表达式对于从字典中提取信息没有用处。它用于从字符串中提取信息。
  • 一般来说,如果你使用range(len(..)),你就走上了一条非pythonic的道路。

标签: python regex dictionary


【解决方案1】:

我认为这可能会有所帮助

banks = [{'bank_code': 'BANKA',
  'profit_rate': 2.7},
{'bank_code': 'BANKB',
  'interest_rate': 2.6}]

for bank in banks:
    x = list(bank.keys())[1]
    print(bank[x])

【讨论】:

    【解决方案2】:

    这是另一种方法,truth value testing

     for k in banks:
        print(k.get('profit_rate') or k.get('interest_rate', 0))
    

    【讨论】:

    • 如果profit_rate 存在但为0 或其他错误怎么办?
    【解决方案3】:

    您可以使用列表推导来遍历列表。

    banks = [{'bank_code': 'BANKA',
      'profit_rate': 2.7},
    {'bank_code': 'BANKB',
      'interest_rate': 2.6}]
    
    print(*[' '.join([el.get('bank_code'),'prof='+str(el.get('profit_rate')),'rate='+str(el.get('interest_rate'))]) for el in banks],sep='\n')
    

    输出:

    BANKA prof=2.7 rate=None
    BANKB prof=None rate=2.6
    

    [程序结束]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2012-06-01
      • 2013-04-20
      相关资源
      最近更新 更多