使用 lambda 转换字典列表中的值
Transform values in a list of dictionaries using lambda
我有一个字典列表,像这样:
matrices = [
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_a_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_b_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_c_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_d_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_e_matrix},
]
其中每个 'matrix'
值都是一个 pandas 矩阵对象,并且 dark_matter_a_matrix.dtypes
,例如,对于每个矩阵,returns 一系列浮点数。
现在我想在一行中对字典中的所有矩阵进行一些转换。
转换会立即将一些 function(matrix)
应用于所有字典值。
在 pandas 中,我会在 DataFrame 中使用 apply()
和 lambda
,如下所示:
new_matrices = matrices['matrix'].apply(lambda x: function(x))
这个到字典的最好方法是什么?我必须保持字典结构相同。
您可以遍历 matrices
中的字典并将 function
应用于每个字典中的每个 DataFrame:
for d in matrices:
d['matrix'] = d['matrix'].apply(lambda x: function(x))
我猜你也可以把它写成列表推导式:
matrices = [{'name': 'dark_matter_and_gas', 'matrix': d['matrix'].apply(lambda x: function(x))} for d in matrices]
但在这种情况下效率要低得多,因为您可以在循环中修改每个字典而无需创建新列表。
我有一个字典列表,像这样:
matrices = [
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_a_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_b_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_c_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_d_matrix},
{ "name": 'dark_matter_and_gas', 'matrix': dark_matter_e_matrix},
]
其中每个 'matrix'
值都是一个 pandas 矩阵对象,并且 dark_matter_a_matrix.dtypes
,例如,对于每个矩阵,returns 一系列浮点数。
现在我想在一行中对字典中的所有矩阵进行一些转换。
转换会立即将一些 function(matrix)
应用于所有字典值。
在 pandas 中,我会在 DataFrame 中使用 apply()
和 lambda
,如下所示:
new_matrices = matrices['matrix'].apply(lambda x: function(x))
这个到字典的最好方法是什么?我必须保持字典结构相同。
您可以遍历 matrices
中的字典并将 function
应用于每个字典中的每个 DataFrame:
for d in matrices:
d['matrix'] = d['matrix'].apply(lambda x: function(x))
我猜你也可以把它写成列表推导式:
matrices = [{'name': 'dark_matter_and_gas', 'matrix': d['matrix'].apply(lambda x: function(x))} for d in matrices]
但在这种情况下效率要低得多,因为您可以在循环中修改每个字典而无需创建新列表。