Python 蟒蛇:什么是为了。。。在里面
在Python Cookbook第三版的第29页中,作者做了以下陈述: “…也可以通过创建元组序列并将其传递给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
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
——我看到人们这样做,但我不明白为什么。