为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星coding 2023-08-22 10:27:46
我试图理解以下 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())


查看完整回答
反对 回复 2023-08-22
?
潇潇雨雨

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'])

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


查看完整回答
反对 回复 2023-08-22
?
慕斯709654

TA贡献1840条经验 获得超5个赞

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



查看完整回答
反对 回复 2023-08-22
  • 3 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信