我的迭代器只返回键而不是打印时的项目

时间:2018-01-05 10:34:11

标签: python-3.x dictionary iterator

我正在为字典实现我的自定义迭代器,但我得到的只是键而不是项目。我的代码是:

initial_song_data = {
"blue-da-ba-dee-sample.ogg": {
    "album": "Rush of Blood to the Head",
    "path": "blue-da-ba-dee-sample.ogg",
    "name": "blue da ba dee sample",
    "artists": ["Coldplay", "Nirvana"]
},
"to-bring-you-my-love.ogg": {
    "album": "Rush of Blood to the Head",
    "path": "to-bring-you-my-love.ogg",
    "name": "to bring you my love",
    "artists": ["Nirvana", "U2"]
}}

iter_obj = iter(initial_song_data)

while True:
    try:
        element = next(iter_obj)
        print(element.values())
    except StopIteration:
        break
for song in initial_song_data:
    print(song)

输出: 蓝色-DA-BA-DEE-sample.ogg

到外带你 - 我 - love.ogg

我在这里缺少什么?请帮忙。

2 个答案:

答案 0 :(得分:0)

我不确定所需的输出,但是如果用print(element.values())替换print(initial_song_data[element].values())会产生它吗? (或print(initial_song_data[element].items()),取决于你想要得到的东西。)

顺便说一句,当我运行你的代码时(使用exec内置函数交互式),我得到AttributeError: 'str' object has no attribute 'values'

答案 1 :(得分:0)

iter函数返回传递参数的迭代器对象。字典的迭代器遍历字典的键。这样就可以按预期工作了。