我试图理解以下 Python 行:result = {'key_A': [*dict_A.keys()], 'key_B': "dummy_string"}结果是字典,其中包含 Result['key_A'] 中的列表和 Result['key_b'] 中的字符串。但我不确定为什么 dict_A.keys() 必须被解压,然后才能再次放入列表中。这种额外的拆包操作是否有原因?
3 回答
森栏
TA贡献1810条经验 获得超5个赞
在Python 3中.keys
,不返回列表,而是返回dict_keys
对象,因此如果list
需要,则必须对其进行转换。
[*dict_A.keys()]
相当于list(dict_A.keys())
潇潇雨雨
TA贡献1833条经验 获得超4个赞
dict.keys() 函数返回一个视图对象,它表示对字典所做的更改。
简而言之,更改字典会影响键的对象。例子:
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'])
因此,为了维护字典键的当前状态,请转换为列表。
慕斯709654
TA贡献1840条经验 获得超5个赞
[key for key in dict_A.keys()]
解包运算符可用于解包生成器/对象,因此用户可以使用,而不是必须执行 ,[*dict_A.keys()]
因为它将获取生成器的每个项目并将其打包回列表中。这也类似于使用list(dict_A.keys())
.
添加回答
举报
0/150
提交
取消