在for循环中使用"key:value"对打印dict

New*_*420 0 python dictionary python-3.x

我想遍历dict,spam并以格式打印结果"key: value".我的代码产生了不同的结果.

有没有办法纠正输出?为什么我得到这个输出?

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

for k in spam.keys():
    print(str(k) + ': ' + str(spam.values()))
Run Code Online (Sandbox Code Playgroud)

得到的结果是:

color: dict_values(['red', '42', 'mars'])
age: dict_values(['red', '42', 'mars'])
planet of origin: dict_values(['red', '42', 'mars'])
Run Code Online (Sandbox Code Playgroud)

预期结果:

color: red
age: 42
planet of origin: mars
Run Code Online (Sandbox Code Playgroud)

abc*_*ccd 14

你应该改为使用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))
Run Code Online (Sandbox Code Playgroud)