我试图理解以下 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
	提交
		取消
	