Python 所有键和列表值对的字典iterable
我正在寻找一个字典(或一个简单的解决方案)上的方法,它可以返回键、值组合Python 所有键和列表值对的字典iterable,python,dictionary,iterable,Python,Dictionary,Iterable,我正在寻找一个字典(或一个简单的解决方案)上的方法,它可以返回键、值组合 dictionary = {'foo': ['bar', 'baz'], 'spam': ['eggs']} 我想要的是同时解压列表的键值对的组合 例: 上面的方法很有效,但我很好奇是否有一个现有的itertool或dictionary方法可以复制这些循环 >>> dictionary {'foo': ['bar', 'baz'], 'spam': ['eggs']} >
dictionary = {'foo': ['bar', 'baz'],
'spam': ['eggs']}
我想要的是同时解压列表的键值对的组合
例:
上面的方法很有效,但我很好奇是否有一个现有的itertool或dictionary方法可以复制这些循环
>>> dictionary
{'foo': ['bar', 'baz'], 'spam': ['eggs']}
>>> [(k, v) for k, l in dictionary.items() for v in l]
[('foo', 'bar'), ('foo', 'baz'), ('spam', 'eggs')]
当然,这也可以作为一个生成器,或者在您需要的任何其他上下文中使用
当然,这也可以作为生成器使用,或者在您需要的任何其他上下文中使用。试试这个
for key in dictionary:
for item in dictionary[key]:
print key, item
试试这个
for key in dictionary:
for item in dictionary[key]:
print key, item
这不是一个内置的特性,但您可以很容易地实现这一点
mydict = {'foo': ['bar', 'baz'],
'spam': ['eggs']}
for key, value in ((k,v) for (k, vs) in mydict.items() for v in vs):
print(key, value)
或者把它们列为一个列表
items = [(k, v) for (k,vs) in mydict.items() for v in vs]
这不是一个内置的特性,但您可以很容易地实现这一点
mydict = {'foo': ['bar', 'baz'],
'spam': ['eggs']}
for key, value in ((k,v) for (k, vs) in mydict.items() for v in vs):
print(key, value)
或者把它们列为一个列表
items = [(k, v) for (k,vs) in mydict.items() for v in vs]
另一种适合初学者的简单方法:
请注意使用括号在输出时创建元组。另一种简单的初学者方法: 注意使用括号在输出上创建元组。使用编写生成器 而不是将输出作为列表填充到内存中。解包函数在运行时创建所需的输出,如果字典中有大量键,这非常有用
mydict = {'foo': ['bar', 'baz'],
'spam': ['eggs']}
def unpack(dictionay):
for key, values in dictionay.items():
for val in values:
yield key,val
for k, v in unpack(mydict):
print k, v
用于编写生成器
而不是将输出作为列表填充到内存中。解包函数在运行时创建所需的输出,如果字典中有大量键,这非常有用
mydict = {'foo': ['bar', 'baz'],
'spam': ['eggs']}
def unpack(dictionay):
for key, values in dictionay.items():
for val in values:
yield key,val
for k, v in unpack(mydict):
print k, v
这可能是有用的阅读这可能是有用的阅读谢谢!特别是像推荐的发电机。比冗长的双for循环更干净。谢谢!特别是像推荐的发电机。比冗长的双for循环更干净。