Python 用“;键:value”;for循环中的成对

Python 用“;键:value”;for循环中的成对,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我想遍历dict,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', 'mar

我想遍历dict,
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
str(spam.values())
更改为
spam[k]
。第一个选项给出字典中的所有值,第二个选项产生属于当前键
k

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

for k in spam.keys():
     print(str(k)+': '  + spam[k])
或者更好:

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

您应该改为使用
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))
您可以这样做:

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


for k in spam.keys():

    print(k+  ":"  +spam[k] )
你试过了吗

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

照mathias711的建议去做! 事实上,您的代码使用str(spam.values())所做的就是写入dict的所有值。 通过执行
str(spam[k])
可以获得与dict“spam”中的键“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]))
试试下面的代码

s={'name': 'you', 'number': 123, 'password': '555', 'amt': 800}


for i in s:
    print(i,"=>" ,s[i])

无需强制转换为StringWelcome to Stack Overflow的可能副本。请看。在您的情况下,答案应该使用代码块正确格式化。此外,代码是可以的,但添加上下文(其背后的原因)比单独使用代码更有用。