是否有理由解压列表然后将其放回列表中?

我试图理解以下 Python 行:
result = {'key_A': [*dict_A.keys()], 'key_B': "dummy_string"}
结果是字典,其中包含 Result['key_A'] 中的列表和 Result['key_b'] 中的字符串。但我不确定为什么 dict_A.keys() 必须被解压,然后才能再次放入列表中。这种额外的拆包操作是否有原因?

繁星coding
浏览 133回答 3
3回答

森栏

在Python 3中.keys,不返回列表,而是返回dict_keys对象,因此如果list需要,则必须对其进行转换。[*dict_A.keys()]相当于list(dict_A.keys())

潇潇雨雨

dict.keys() 函数返回一个视图对象,它表示对字典所做的更改。简而言之,更改字典会影响键的对象。例子:a = {'a':1, 'b':2}b = a.keys()print(b)a['c'] = 3print(b)Out:dict_keys(['a', 'b'])dict_keys(['a', 'b', 'c'])因此,为了维护字典键的当前状态,请转换为列表。

慕斯709654

[key for key in dict_A.keys()]解包运算符可用于解包生成器/对象,因此用户可以使用,而不是必须执行 ,[*dict_A.keys()]因为它将获取生成器的每个项目并将其打包回列表中。这也类似于使用list(dict_A.keys()).
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python