有没有理由拆开清单然后将其放回清单?

问题描述

我正在尝试理解以下Python行:
result = {'key_A': [*dict_A.keys()],'key_B': "dummy_string"}
结果是字典,在Result ['key_A']中保存一个列表,在Result ['key_b']中保存字符串。但是我不确定为什么必须将dict_A.keys()解压缩,而只将其重新放入列表中。进行这种额外的拆箱操作是否有原因?

解决方法

在Python 3中,def search_article result_articles = Article.search params[:search],suggest: true,fields: %i[title body author.name status],page: params[:page],per_page: params[:per_page] render json: { result_articles: result_articles,time: result_articles.took,suggestion: result_articles.suggestions } end 不返回列表,而是返回.keys对象,因此,如果需要dict_keys,则必须对其进行转换。

list等同于[*dict_A.keys()]

,

dict.keys()函数返回一个view object,它代表对字典所做的更改。

简单地说,更改字典会影响键的对象。 例如:

a = {'a':1,'b':2}
b = a.keys()
print(b)
a['c'] = 3
print(b)

Out:
dict_keys(['a','b'])
dict_keys(['a','b','c'])

因此,为了保持词典键的当前状态,请转换为列表。

,

解包运算符可用于解压缩生成器/对象,因此用户不必执行[key for key in dict_A.keys()],而可以使用[*dict_A.keys()],因为它将获取生成器的每个项目并将其打包进入列表。这也类似于使用list(dict_A.keys())

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...