【问题标题】:Print the dict with “key: value” pairs in a for loop在 for 循环中打印带有“键:值”对的 dict
【发布时间】:2017-09-09 18:26:36
【问题描述】:

我想遍历字典spam,并以"key: value" 的格式打印结果。我的代码有问题,产生了不同的结果。

有什么方法可以纠正输出吗?为什么我会得到这个输出?

spam = {'color': 'red', 'age': '42', 'planet of origin': 'mars'}

for k in spam.keys():
    print(str(k) + ': ' + str(spam.values()))

得到的结果:

color: dict_values(['red', '42', 'mars'])
age: dict_values(['red', '42', 'mars'])
planet of origin: dict_values(['red', '42', 'mars'])

预期结果:

color: red
age: 42
planet of origin: mars

【问题讨论】:

标签: python python-3.x dictionary


【解决方案1】:

您应该改用dict.items,因为dict.keys 只遍历键,然后您打印dict.values(),它返回dict 的所有值。

spam = {'color': 'red', 'age': '42','planet of origin': 'mars'}

 for k,v in spam.items():
     print(str(k)+': '  + str(v))

【讨论】:

    【解决方案2】:

    dict.values() 返回字典中所有值的列表。为什么不进行密钥查找?

    for k in spam.keys():
         print(str(k)+': '  + spam[k])
    

    甚至更好:

    for k, v in spam.items():
        print('{}: {}'.format(k, v))
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      spam = {'color': 'red', 'age': '42','planet of origin': 'mars'}
      
      
      for k in spam.keys():
      
          print(k+  ":"  +spam[k] )
      

      【讨论】:

        【解决方案4】:

        你试过了吗?

        for k in spam:
            print(str(k)+':'+str(spam[k]))
        

        【讨论】:

          【解决方案5】:

          str(spam.values()) 更改为spam[k]。第一个选项提供字典中的所有值,第二个选项产生属于当前键 k 的值。

          【讨论】:

          • 不需要转换成字符串
          【解决方案6】:

          试试下面的代码,

          s={'name': 'you', 'number': 123, 'password': '555', 'amt': 800}
          
          
          for i in s:
              print(i,"=>" ,s[i])
          

          【讨论】:

          • 欢迎来到 Stack Overflow。请参阅this article on how to write good answers。在您的情况下,应使用代码块正确格式化答案。此外,代码还可以,但为其添加上下文(其背后的原因)比单独的代码有用得多。
          【解决方案7】:

          按照 mathias711 的建议去做! 实际上,您的代码对str(spam.values()) 所做的就是写入字典的所有值。 通过执行str(spam[k]),您可以获得与字典“垃圾邮件”中的键“k”相关联的值。 如果您确实希望按特定顺序输出,则应该有一个列表,其中所有键都按此顺序排序,因为默认情况下字典的键是不排序的。

          你的代码看起来是这样的:

          spam = {'color': 'red', 'age': '42','planet of origin': 'mars'} 
          
          liste_ordered_for_output['color', 'age', 'planet of origin']
          
          
          for key in liste_ordered_for_output:
              print(str(key)+': '  + str(spam[key]))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-02-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-28
            • 1970-01-01
            相关资源
            最近更新 更多