是否有解包列表然后将其放回列表中的原因?
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'])
因此,为了维护字典键的当前状态,转换为列表。
我正在尝试理解以下 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'])
因此,为了维护字典键的当前状态,转换为列表。