Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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 将生成器对象转换为字典_Python - Fatal编程技术网

Python 将生成器对象转换为字典

Python 将生成器对象转换为字典,python,Python,这是我的密码: # library to extract cookies in a http message cj = cookielib.CookieJar() ... do connect to httpserver etc cdict = ((c.name,c.value) for c in cj) 此代码的问题在于cdict是一个生成器。但我只想创建一个字典。如何更改要分配给词典的最后一行 使用字典理解。(在Python 2.7中介绍) cdict={c.name:c.cj中c的值

这是我的密码:

# library to extract cookies in a http message
cj = cookielib.CookieJar()

... do connect to httpserver etc

cdict = ((c.name,c.value) for c in cj)

此代码的问题在于cdict是一个生成器。但我只想创建一个字典。如何更改要分配给词典的最后一行

使用字典理解。(在Python 2.7中介绍)

cdict={c.name:c.cj中c的值}

比如说,

>>> {i:i*2 for i in range(10)}
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
下面是介绍字典理解的例子。这可能有用

如果您使用的是Python2.7以下的工具。-构建一个键值对列表,并对其调用
dict()
,如下所示

>>> keyValList = [(i, i*2) for i in range(10)]
>>> keyValList
[(0, 0), (1, 2), (2, 4), (3, 6), (4, 8), (5, 10), (6, 12), (7, 14), (8, 16), (9, 18)]
>>> dict(keyValList)
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
只需将生成器传递给该方法即可。像这样的

>>> dict((i, i*2) for i in range(10))
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
使用:
{c.name:c.value for c in cj}

您可以使用:

您可以使用以下选项:

cdict = {c.name:c.value for c in cj}

我想说最简单的方法就是使用
dict()
构造函数。这里有一个例子:

def create_dummy_generator():
for i in range(10):
    yield i, i*2
x = create_dummy_generator()
y = dict(x)
type(x)
# <class 'generator'>
print(x)
# <generator object create_generator at 0x7fde3c562f90>
type(y)
# <class 'dict'>
print(y)
# {0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
def create_dummy_generator():
对于范围(10)内的i:
收益率i,i*2
x=创建虚拟生成器()
y=dict(x)
类型(x)
# 
打印(x)
# 
类型(y)
# 
打印(y)
# {0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
def create_dummy_generator():
for i in range(10):
    yield i, i*2
x = create_dummy_generator()
y = dict(x)
type(x)
# <class 'generator'>
print(x)
# <generator object create_generator at 0x7fde3c562f90>
type(y)
# <class 'dict'>
print(y)
# {0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}