0

嗨,我有一个非常快速的问题

for header in cookie_headers:
    pairs = [pair.partition("=") for pair in header.split(';')]
    cookie_name = pairs[0][0] # the key of the first key/value pairs
    cookie_value = pairs[0][2] # the value of the first key/value pairs
    cookie_parameters = {key.strip().lower():value.strip() for key,sep,value in pairs[1:]}
    cookies.append((cookie_name, (cookie_value, cookie_parameters)))
return dict(cookies)

我有一些类似 cookie_parameters 的代码不适用于 python 2.6 我安装了 2.7 但是它在 python 2.6 中需要的库我太困惑了只需要学习如何在 2.6 中编写这个语法

    cookie_parameters = {key.strip().lower():value.strip() for key,sep,value in pairs[1:]}
4

2 回答 2

3
cookie_parameters = dict((key.strip().lower(), value.strip())
                         for key,sep,value in pairs[1:])

更一般地说,任何像这样的 dict 理解:

{<keyexpr>: <valueexpr> for <comprehension_target>}

… 相当于:

dict((<keyexpr>, <valueexpr>) for <comprehension_target>)

...因为dict构造函数可以采用任何可迭代的 (key, value) 对。

当然,除了 dict 理解会更快,但在 Python 2.7 之前无法工作……</p>

于 2013-10-18T01:30:15.360 回答
0

从 Python 2.7 开始引入了字典理解,请参阅:Python 2.7 中的新增功能

构造dict的三种方式:

class dict(**kwarg) e.g. dict(one=2, two=3)

class dict(mapping, **kwarg) e.g. dict({'one': 2, 'two': 3})
class dict(iterable, **kwarg) e.g. dict(zip(('one', 'two'), (2, 3))) Or dict([['two', 3], ['one', 2]])

列表推导和生成器是可迭代的,您可以将 dict() 与它们结合使用

于 2013-10-18T01:45:14.833 回答