Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Dictionary_Iterable - Fatal编程技术网

Python 蟒蛇:什么是为了。。。在里面

Python 蟒蛇:什么是为了。。。在里面,python,list,dictionary,iterable,Python,List,Dictionary,Iterable,在Python Cookbook第三版的第29页中,作者做了以下陈述: “…也可以通过创建元组序列并将其传递给dict()函数来完成。例如: p1=dict((key,value)表示key,value表示prices.items(),如果value>200) 作者将传递给dict()构造函数的参数作为“序列”引用,这让我想知道,到底是用于…中的什么?它不是一个表达式吗?不能只在Python解释器中键入:用于x in(1,2,3)并接收结果?for列表()例如,,这表明构造函数需要一个itera

在Python Cookbook第三版的第29页中,作者做了以下陈述:

“…也可以通过创建元组序列并将其传递给
dict()
函数来完成。例如:

p1=dict((key,value)表示key,value表示prices.items(),如果value>200)

作者将传递给
dict()
构造函数的参数作为“序列”引用,这让我想知道,
到底是用于…
中的什么?它不是一个表达式吗?不能只在Python解释器中键入:
用于x in(1,2,3)
并接收结果?for
列表()例如,
,这表明构造函数需要一个iterable,但我不清楚到底发生了什么

p1 = dict((key, value) for key, value in prices.items() if value > 200)
相当于:

p1 = {}
for key,value in prices.items():
    if value > 200:
        p1.update({key, value})

prices
是一个
dict
,因此prices,items将返回如下内容:
dict_items([(key1,value1),(key2,value2)])
dict
可以使用一个可数的键/值对来构造一个新实例

(key, value) for key, value in prices.items() if value > 200
是生成器表达式;结果是
generator
类型的值,该值(在迭代时)从
prices.items()
生成第二个元素大于200的元组

另一种创建
生成器的方法是使用生成器功能:

def foo(p):
    for key, value in p.items():
        if value > 200:
            yield key, value

d = dict(foo(prices))

您可以在(1,2,3)中为x执行
:打印(x)
是的,iterable是一个元组here@MichaelSilverstein所示示例不是理解,尽管您可以编写与dict理解相同的功能。@MisterMiyagi它不是序列,不是。@S3DEV:Whoops,感谢输入错误。是的,应该有一个结尾括号。为什么要使用昂贵的
p1.update({key,value})
而不是更便宜的
p1[key]=value
——我看到人们这样做,但我不明白为什么。