這裏是我的代碼:轉換生成對象字典
# 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是發電機。但我想簡單地創建一本字典。如何更改最後一行以分配給字典?
這裏是我的代碼:轉換生成對象字典
# 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.value for c in cj}
例如,
>>> {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}
下面是其中引入字典解析的PEP。它可能是有用的。
如果你在Python 2.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()
方法。這樣
>>> 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}
使用的東西dict comprehension:{c.name:c.value for c in cj}
您可以使用dict comprehension:
cdict = {c.name: c.value for c in cj}
您可以使用此:
cdict = {c.name:c.value for c in cj}