【问题标题】:Printing parts of a dictionary by using a for loop Python使用 for 循环 Python 打印字典的部分内容
【发布时间】:2021-08-04 06:53:02
【问题描述】:

我怎样才能打印出Accountname, APIkey, APIsecret 的clients 字典?我想以预期输出的格式打印它。

代码:

clients = {1: {'AccountName': 'Acount1', 'APIKey': 'sdhsdhjsd','APIsecret':'sadjkaskldjaskdadasdfvg'},
           2: {'AccountName':'Acount2', 'APIKey':'sdasdasdadc','APIsecret':'sdasdasdassvsdvdsfdfsaf'}}

for clients_info in clients.items():
    print("Accountname: ", clients_info['AccountName'], "APIkey: ", clients_info['APIKey'], "APIsecret: ", clients_info['APIsecret'])

预期输出:

Accountname: Acount1 APIkey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
Accountname: Acount2 APIkey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf

实际输出:

TypeError: tuple indices must be integers or slices, not str

【问题讨论】:

    标签: python-3.x dictionary for-loop format


    【解决方案1】:

    如果您对外部字典的键不感兴趣,请迭代 clients.values() 而不是 clients.items():

    for clients_info in clients.values():
         print("Accountname:", clients_info['AccountName'], "APIkey:", clients_info['APIKey'], "APIsecret:", clients_info['APIsecret'])
    

    生产

    Accountname: Acount1 APIkey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
    Accountname: Acount2 APIkey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf
    

    另外,print() 会自动在其参数之间添加空格,因此您不必在输出标签之后添加额外的空格。

    【讨论】:

      【解决方案2】:

      当使用clients.items() 和单个可迭代对象时,每个可迭代对象都是值的键的元组,即(key, value)。如果你愿意,可以通过for key, value in clients.items() 解压它们,否则你必须在 for 循环之后自己存储它们:

      for client_info_tuple in clients.items():
          client_info = client_info_tuple[1]
      

      但我认为第一个选项更简洁。由于您不需要索引(据我了解),您可以只执行 clients.values() 或在索引变量前面放置 _,这样您的 IDE 就不会抱怨它。

      如果您使用的是 Python >= 3.6,您还可以使用 f-strings,在我看来,这会让这类东西看起来更美观:

      for _index, client_info in clients.items():
          print(
              f"Accountname: {client_info['AccountName']} "
              f"APIKey: {client_info['APIKey']} "
              f"APIsecret: {client_info['APIsecret']}"
          )
      

      输出:

      Accountname: Acount1 APIKey: sdhsdhjsd APIsecret: sadjkaskldjaskdadasdfvg
      Accountname: Acount2 APIKey: sdasdasdadc APIsecret: sdasdasdassvsdvdsfdfsaf
      

      【讨论】:

        猜你喜欢
        • 2021-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 2021-09-24
        • 1970-01-01
        相关资源
        最近更新 更多