Python 将reducelambda转换为列表理解
我按照这篇文章创建了一些函数,这些函数可以在给定键列表的嵌套字典中获取和设置值:Python 将reducelambda转换为列表理解,python,list-comprehension,python-2.x,reduce,Python,List Comprehension,Python 2.x,Reduce,我按照这篇文章创建了一些函数,这些函数可以在给定键列表的嵌套字典中获取和设置值: 在避免reduce的同时,如何通过pythonical(2.x)使用列表理解或其他方法来实现这一点?您的结果不是列表,因此列表理解是不可能的。试试这个: def get_from_dict(data, keys): for key in keys: data = data[key] return data def set_in_dict(data, keys, value):
在避免reduce的同时,如何通过pythonical(2.x)使用列表理解或其他方法来实现这一点?您的结果不是列表,因此列表理解是不可能的。试试这个:
def get_from_dict(data, keys):
for key in keys:
data = data[key]
return data
def set_in_dict(data, keys, value):
get_from_dict(data, keys[:-1])[keys[-1]] = value
您的结果不是列表,因此列表理解是不可能的。试试这个:
def get_from_dict(data, keys):
for key in keys:
data = data[key]
return data
def set_in_dict(data, keys, value):
get_from_dict(data, keys[:-1])[keys[-1]] = value
我认为做这件事的更具python风格的方法是使用一个显式循环,就像你在最初的问题中所做的那样。请看这里的问题: 从链接的答案中: Guido建议不要使用
reduce()
,并解释了为什么要在链接中将其移动到python 3.x中的functools
相反,他建议采取如下措施:
def get_from_dict(data_dict, map_list):
for key in map_list:
data_dict = data_dict[key]
return data_dict
def set_in_dict(data_dict, map_list, value):
data_dict = get_from_dict(data_dict, map_list[:-1])
data_dict[map_list[-1]] = value
因为它更清楚发生了什么。我认为更像python的方法是使用一个显式循环,就像你在最初的问题中所做的那样。请看这里的问题: 从链接的答案中: Guido建议不要使用
reduce()
,并解释了为什么要在链接中将其移动到python 3.x中的functools
相反,他建议采取如下措施:
def get_from_dict(data_dict, map_list):
for key in map_list:
data_dict = data_dict[key]
return data_dict
def set_in_dict(data_dict, map_list, value):
data_dict = get_from_dict(data_dict, map_list[:-1])
data_dict[map_list[-1]] = value
因为它更清楚发生了什么。你已经做的很好。您将无法做得更好,因为
reduce
基本上是用累加器迭代某个对象,而基本列表理解则是在没有累加器的情况下迭代某个对象
但是,如果您使用这种嵌套字典的字符串,那么JSON应该是一种选择。请参见您已经做的很好。您将无法做得更好,因为
reduce
基本上是用累加器迭代某个对象,而基本列表理解则是在没有累加器的情况下迭代某个对象
但是,如果您使用这种嵌套字典的字符串,那么JSON应该是一种选择。请参见
reduce
此处适用。reduce
此处适用。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-我编辑了我的答案,希望能更有用。感谢@jezraelWhile的提示此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-我编辑了我的答案,希望能更有用。谢谢你的提示@jezrael