例如:
list1=['k1','k2','k3',['k4','k5',['k6','k7']]]
list2=['v1','v2','v3',['v4','v5',['v6','v7']]]
我想把它们合并成这样的字典:
^{pr2}$我有办法做到这一点,但我认为这需要太多时间:
def mergeToDict(keyList, valueList):
resultDict = {}
for key, value in itertools.izip(keyList, valueList):
if type(key) == list and type(value) == list:
resultDict=dict(resultDict,**mergeToDict(key, value))
elif type(key) != list and type(key) != dict and type(key) != tuple:
resultDict[key] = value
return resultDict
有更好的主意吗?在
将
flatten
定义为:dict(zip(flatten(list1), flatten(list2)))
似乎和你的一样快。这是一个更方便的方法,正如大家所说。在我认为你根本不需要扁平化,如果你只有你所展示的那些用例(嵌套列表,但形状相同)。这里有一种方法,在我的机器上至少比你的快2-3倍(同样只适用于这种约束):
方法比较:
操作方法,10000次运行:0.290050983429
其他建议方法,10000次运行:0.580717086792
这种方法,运行10000次:0.155267000198
也许没有其他解决方案那么优雅,但性能似乎是这里的主要关注点。在
我会使用某种展平函数:
现在你可以做了
^{pr2}$我认为这种方式对读者来说更一般,更透明。在
相关问题 更多 >
编程相关推荐