用密钥迭代字典的每个元素

Col*_*edy 0 python

假设你有这样的字典

dict_h = {'seven': [8, 9, 10]}
Run Code Online (Sandbox Code Playgroud)

我想像这样迭代它

for key, values in dict_h.items():
    for value in values:
        print('key value', key, value)
Run Code Online (Sandbox Code Playgroud)

有没有办法在一行中做到这一点?我查看了itertools,看看是否有什么东西,但没有提出任何东西.

理想情况下

for key, value in iter_keyvalue(dict_h):
    print('key value', key, value)
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都想要输出

"key value seven 8"
"key value seven 9"
"key value seven 10"
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 5

您可以使用列表推导或结合嵌套循环的生成器表达式,例如:

>>> dict_h = {'seven': [8, 9, 10]}
>>> print(*["key value {} {}".format(k, v) for k, values in dict_h.items() for v in values], sep="\n")
key value seven 8
key value seven 9
key value seven 10
Run Code Online (Sandbox Code Playgroud)

也就是说,在必须维护的代码中,您应该更喜欢可读性而不是简洁性.