max_list变量列表理解是如何工作的?
def mode(*args):
dict_vals = {i: args.count(i) for i in args}
max_list = [k for k, v in dict_vals.items() if v == max(dict_vals.values())]
return max_list我知道dict_vals创建了一个字典,它保存您输入的值(键)和每个值的出现次数(键的值)。我还知道,max_list创建了一个键(值)列表,这些键(值)是根据最大值(出现)创建的。我只想知道在max_list中使用的理解是如何工作的,也许还想了解一些将字典转换为具有类似语法的列表的其他示例,以供有用的应用程序使用。另外,是否有类似的方法来处理元组呢?
发布于 2020-09-13 05:16:48
dict_vals.items()items()方法生成字典中的每个键值对。
k, v in dict_vals.items()这将迭代items()生成的字典中的每个键值对。
k, v in dict_vals.items() if v == max(dict_vals.values())通过只选择值等于存储在dict_vals中的最大值的对(.values()给出所有的值& max()找到其中最大的值)来筛选键值对的列表。
最后,
k for k,v in dict_vals.items() if v == max(dict_vals.values())只为这些对选择键(k)。[]把它变成了一个列表。
发布于 2020-09-13 05:15:12
max_list = [k for k, v in dict_vals.items() if v == max(dict_vals.values())]做类似于:
max_list = []
for k,v in dict_vals.items():
if v == max(dict_vals.values()):
max_list.append(k)列表理解中的第一个变量(在本例中是k)总是列表中的内容。结尾处的条件检查是否应该添加循环中的当前项。如果您想要在元组中得到结果,我相信您只需将外部用元组包装(一个简单的括号是不行的,因为解释器可能会认为您只是对操作进行分组)。
max_list = tuple(k for k, v in dict_vals.items() if v == max(dict_vals.values()))https://stackoverflow.com/questions/63867384
复制相似问题