gpt4 book ai didi

python - 存储 2 索引对象的更自然的方式?

转载 作者:行者123 更新时间:2023-11-28 19:29:42 26 4
gpt4 key购买 nike

我有很多用两个索引索引的数据。目前我将东西存储为嵌套字典,如

{1000: {3: 1.0, 4: 2.0}, 1001: {3: 3.0, 4: 4.0} , 1002: {3: 5.0, 4: 0.0}}

所以我可以使用 mydata[1000][4] 访问数据。我在包装类中有这个嵌套字典,它允许我访问具有第二个索引的所有元素 mydata.get(second=4) 以提供 [2.0, 4.0, 0.0]

嵌套字典可以工作,但在我看来非常困惑。我最近开始用大约 100,000 个条目构建这些结构,事实证明嵌套字典的初始构建非常缓慢。

是否有更自然或更 pythonic 的方式来处理具有两个索引的数据?如果内部索引始终是相同的集合,会有帮助吗?

最佳答案

也许你可以通过滥用位片来实现这一点:

#! /usr/bin/python3

class MyDict:
def __init__ (self, d):
self.d = d

def __getitem__ (self, key):
if isinstance (key, int):
return [_ for _ in self.d [key].values () ]
if isinstance (key, slice):
if key.start == None:
return [v for s in (d.items () for d in self.d.values () ) for k, v in s if k == key.stop]
if key.stop == None:
return [_ for _ in self.d [key.start].values () ]
return self.d [key.start] [key.stop]
[] [key]

d = {1000: {3: 1.0, 4: 2.0}, 1001: {3: 3.0, 4: 4.0} , 1002: {3: 5.0, 4: 0.0}}
d = MyDict (d)

print (d [1000] )
print (d [1000:] )
print (d [:4] )
print (d [1001:4] )

关于python - 存储 2 索引对象的更自然的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18858220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com