2024-09-26 17:52:22 发布
网友
关于适当数据结构的问题:
我有五个变量,它们有不同的值 string根据他们是否在美国/阿拉斯加和 以半/全分辨率
string
所以我正在构建一个5/2/2(数组、列表或dict)
我想用x = DStr(var,'AK','H')访问它,例如。。 对于阿拉斯加/half res,OSP/UL/LR/etc的变量值是多少
x = DStr(var,'AK','H')
这是一个静态表,值不会更改。 没有明显的顺序要求指数为0,1,2
问题是,数组不喜欢字符串索引和 迪克特只想要一把钥匙,不是三把
有什么想法吗
记住你的问题相当不清楚。我真的不明白您想要建模的数据的含义,我也不知道如何使用它
也就是说,类是定义自己的数据结构的好方法。在这种情况下,我猜您有OSP、UL、LR和“等”。因此,我将为此定义一个类:
class MyData: def __init__(self, osp, ul, lr, etc): self.osp = osp self.ul = ul self.lr = lr self.etc = etc
然后创建包含类实例的查找表:
table = { 'AK': {'H': MyData(1,5,20,'something'), 'F': MyData(3,2,28,'spam') }, 'FL': {'H': MyData(42,5,20,'eggs'), 'F': MyData(2,13,7,'ham') }, }
然后我可以定义一个函数来匹配您在问题中显示的签名。我忽略了参数var,因为你的问题没有告诉我任何有关它的信息
var
def DStr(var, state, resolution): return table[state][resolution]
可以使用元组为dict编制索引:
>>> values = { ... ("AK", "H"): ("some", "sample", "data", "to", "return"), ... ("AK", "F"): ("more", "sample", "data", "for", "you"), ... # More data here ... } >>> a, b, c, d, e = values[("AK", "H")] >>> a "some"
或者,您可以使用一套字典:
>>> values = { ... "AK": { ... "H": ("some", "sample", "data", "to", "return"), ... "F": ("more", "sample", "data", "for", "you") ... }, ... # Other nested dicts here ... } >>> a, b, c, d, e = values["AK"]["H"] >>> a "some"
如果您有一个类结构,可以将5个数据点定义为单个对象的一部分(如果数据相关,最好将数据分组在一起),则可以存储类的实例,而不是元组:
>>> values = { ... ("AK", "H"): MyClass("some", "sample", "data", "to", "return"), ... ("AK", "F"): MyClass("more", "sample", "data", "for", "you"), ... # More data here ... } >>> obj = values[("AK", "H")] >>> obj.osp "some"
或
>>> values = { ... "AK": { ... "H": MyClass("some", "sample", "data", "to", "return"), ... "F": MyClass("more", "sample", "data", "for", "you") ... }, ... # Other nested dicts here ... } >>> obj = values["AK"]["H"] >>> obj.osp "some"
如果有固定长度的两个字符串组成查找,则可以将它们连接在一起。可能比拥有价值观更简单。值可以在列表中
table = {'AKH': [1,"two",3.14], 'AKF': [2,"four", 6.28] } state = 'AK' res = 'F' table[state+res]
输出
[2, 'four', 6.28]
记住你的问题相当不清楚。我真的不明白您想要建模的数据的含义,我也不知道如何使用它
也就是说,类是定义自己的数据结构的好方法。在这种情况下,我猜您有OSP、UL、LR和“等”。因此,我将为此定义一个类:
然后创建包含类实例的查找表:
然后我可以定义一个函数来匹配您在问题中显示的签名。我忽略了参数
var
,因为你的问题没有告诉我任何有关它的信息可以使用元组为dict编制索引:
或者,您可以使用一套字典:
如果您有一个类结构,可以将5个数据点定义为单个对象的一部分(如果数据相关,最好将数据分组在一起),则可以存储类的实例,而不是元组:
或
如果有固定长度的两个字符串组成查找,则可以将它们连接在一起。可能比拥有价值观更简单。值可以在列表中
输出
相关问题 更多 >
编程相关推荐