所有键和列表值对的字典可迭代
dictionary iterable of all key and list value pairs
我正在寻找一种可以 return 键、值组合的字典方法(或简单的解决方案)。
dictionary = {'foo': ['bar', 'baz'],
'spam': ['eggs']}
我想要的是同时解压列表的键值对组合。
例如:
'foo', 'bar'
'foo', 'baz'
'spam', 'eggs'
tuples = []
for key in dictionary:
for value in dictionary.get(key):
tuples.append((key, value))
以上方法有效,但我很好奇是否存在可以复制这些循环的现有 itertool 或字典方法。
>>> 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
这不是内置功能,但您可以轻松实现。
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]
另一种 简单 方法初学者:
dictionary = {'foo': ['bar', 'baz'], 'spam': ['eggs']}
for key, value in dictionary.items():
for item in value:
print((key, item))
请注意 使用括号在输出中创建元组。
使用yield编写生成器。
而不是将输出作为列表填充到内存中。 unpack 函数在运行时创建所需的输出,如果字典中有大量键,这将非常有用。
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
我正在寻找一种可以 return 键、值组合的字典方法(或简单的解决方案)。
dictionary = {'foo': ['bar', 'baz'],
'spam': ['eggs']}
我想要的是同时解压列表的键值对组合。
例如:
'foo', 'bar'
'foo', 'baz'
'spam', 'eggs'
tuples = []
for key in dictionary:
for value in dictionary.get(key):
tuples.append((key, value))
以上方法有效,但我很好奇是否存在可以复制这些循环的现有 itertool 或字典方法。
>>> 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
这不是内置功能,但您可以轻松实现。
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]
另一种 简单 方法初学者:
dictionary = {'foo': ['bar', 'baz'], 'spam': ['eggs']}
for key, value in dictionary.items():
for item in value:
print((key, item))
请注意 使用括号在输出中创建元组。
使用yield编写生成器。
而不是将输出作为列表填充到内存中。 unpack 函数在运行时创建所需的输出,如果字典中有大量键,这将非常有用。
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