我有以下设置:一个函数返回一个具有N个大小相等的时间线(100k点)的字典。字典返回的结果如下所示:
timelines = dict()
timelines["Name1"] = dict()
timelines["Name1"]["Name2"] = dict()
timelines["Name1"]["Name3"] = dict()
timelines["Name1"]["Name2"]["a"] = # List of 100k points
timelines["Name1"]["Name2"]["b"] = # List of 100k points
timelines["Name1"]["Name2"]["c"] = # List of 100k points
timelines["Name1"]["Name3"]["b"] = # List of 100k points
timelines["Name1"]["Name2"]["c"] = # List of 100k points
timelines["Name1"]["a"] = # List of 100k points
timelines["Name1"]["b"] = # List of 100k points
timelines["Name2"] # and so on.
如您所知,时间线(点列表)并不总是存储在同一级别中。有时我可以用1键,有时用2键,有时用5键。 这些键将给我的绘图标签,是必要的。我的计划是把一组键传递给plot函数。你知道吗
示例:
T = ("Name1", "Name2", "b")
# Will allow me to access the timeline:
timelines["Name1"]["Name2"]["b"]
# by doing:
timelines[T[0]][T[1]][T[2]]
在上面的例子中,我自己编写了dictionary路径([T[0]][T[1]][T[2]]
),但是如何使用大小未知的元组T访问正确的时间轴呢?如何将元组解压到字典路径中?你知道吗
谢谢:)
我真的会这样做,这将是最快的方法比可能
Lambda
调用会变得非常昂贵,尤其是随着数据的增长,getitem
会比这里列出的任何其他方法都要快,因为它完全是在C
中实现的可以使用递归方法
你可以用reduce
初始值是
timeline
dict.Reduce对T
元组进行迭代,并在每次迭代时调用lambda函数。lambda有两个参数:第一个参数是累积值,在本例中是当前dictd
,第二个参数是它在这个迭代过程中从元组得到的键。lambda返回d[key]
,它成为下一次迭代的新累积值。你知道吗相关问题 更多 >
编程相关推荐