是否有解包列表然后将其放回列表中的原因?

Is there a reason for unpacking a list then putting it back into a list?

我正在尝试理解以下 Python 行:
result = {'key_A': [*dict_A.keys()], 'key_B': "dummy_string"}
Result 是一个字典,在 Result['key_A'] 中包含一个列表,在 Result['key_b'] 中包含一个字符串。但我不确定为什么 dict_A.keys() 必须被解包,只是再次放入列表中。这个额外的解包操作有什么原因吗?

在Python3中.keys不是return一个列表,而是一个dict_keys对象,所以如果需要list就必须转换。

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

解包运算符可用于解包 generators/objects,因此用户可以使用 [*dict_A.keys()] 而不是必须执行 [key for key in dict_A.keys()],因为它将获得生成器的每个项目并将其打包回列表中。这也类似于使用 list(dict_A.keys()).

dict.keys() 函数returns一个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'])

因此,为了维护字典键的当前状态,转换为列表。