Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 所有键和列表值对的字典iterable_Python_Dictionary_Iterable - Fatal编程技术网

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循环更干净。