Python 创建新词典/列表时,很难理解if和in的用法
我不明白下面的代码是如何工作的。如果某个内容是空字典,那么它怎么可能“在”Python 创建新词典/列表时,很难理解if和in的用法,python,python-3.x,if-statement,Python,Python 3.x,If Statement,我不明白下面的代码是如何工作的。如果某个内容是空字典,那么它怎么可能“在”reviews\u max中 reviews_max = {} for app in android: name = app[0] n_reviews = float(app[3]) if name in reviews_max and reviews_max[name] < n_reviews: reviews_max[name] = n_reviews eli
reviews\u max
中
reviews_max = {}
for app in android:
name = app[0]
n_reviews = float(app[3])
if name in reviews_max and reviews_max[name] < n_reviews:
reviews_max[name] = n_reviews
elif name not in reviews_max:
reviews_max[name] = n_reviews
reviews_max={}
对于android中的应用程序:
名称=应用程序[0]
n_reviews=浮动(应用[3])
如果在reviews\u max和reviews\u max[name]
在第一次迭代后,它不会为空,因为此行正在运行:
reviews_max[name] = n_reviews
在第一次迭代中,
reviews\u max
将为空,这是正确的。但是如果android
包含多个元素,reviews\u max
将不会为空,因为app[0]
将在第一次迭代时作为app[3]
的键添加到其中
此代码:
reviews_max[name] = n_reviews
在第一次迭代时,将定义为
app[0]
的name
分配给n\u reviews
,定义为float(app[3])
在reviews\u max
字典中,因为name
不在reviews\u max中逐块查看:
# define an empty dictionary called `reviews_max`
reviews_max = {}
# for each entry in the list `android`, store the name and number of reviews
for app in android:
name = app[0]
n_reviews = float(app[3])
# if there's already an entry in `reviews_max` for that app,
# and the value of that entry is smaller than the number of reviews for the app,
# update the entry
if name in reviews_max and reviews_max[name] < n_reviews:
reviews_max[name] = n_reviews
# otherwise, add the entry to reviews_max
elif name not in reviews_max:
reviews_max[name] = n_reviews
#定义一个名为“reviews”的空字典`
评论_max={}
#对于“android”列表中的每个条目,存储评论的名称和数量
对于android中的应用程序:
名称=应用程序[0]
n_reviews=浮动(应用[3])
#如果“reviews_max”中已经有该应用程序的条目,
#该条目的值小于应用程序的评论数,
#更新条目
如果在reviews\u max和reviews\u max[name]
在第一次迭代之后,它不再是空的。对于这样的代码,要理解的关键是询问在第一次迭代之后迭代继续进行时会发生什么。