在 python 中使用哪种数据结构来编码 2 列 table?

Which data structure to use in python for coding a 2 column table?

我想编写以下代码table

我正在考虑有一个功能,我可以输入例如 "tropical zone" 然后 return 我 n = 0.8n1 = 0.9 我正在考虑使用字典。在这种情况下,这是最适合使用的数据结构吗?

def navigationcoefficients (type,key):
    if type == 'n':
        dict = {'unrestricted navigation': 1, 'summer zone': 0.9, 'tropical zone': 0.8, 'coastal zone': 0.8, 'sheltered area': 0.65}
        return dict[key]
    if type == 'n1':
        dict = {'unrestricted navigation': 1, 'summer zone': 0.95, 'tropical zone': 0.9, 'coastal zone': 0.9, 'sheltered area': 0.65}
        return dict[key]

n = navigationcoefficients('n','unrestricted navigation')
n1 = navigationcoefficients('n1','unrestricted navigation')

提前致谢

如果我这样做,我更愿意设置一个 class 来保存行数据,例如:

class NamedTuple:
    def __init__(self, n, n1):
        self.n = n
        self.n1 = n1

data = {
    "Unrestricted navigation": NamedTuple(1.00, 1.00),
    "Summerzone": NamedTuple(0.90, 0.95)
    # ...
}

data["Summerzone"].n # access n of summer zone

稍后您可以为此添加辅助函数 class。

当计算变得更复杂时,您可以用 class 包裹 listdict 以更好地控制您的行。

您可以使用字典、json和数组的组合。

示例:

array = []
navigationDetails = {"Unrestricted Navigations":{"n1":"1.00","n2":"1.00"}}
array.append(navigationDetails)
navigationDetails = {"Summer Zone":{"n1":"0.90","n2":"0.95"}}
array.append(navigationDetails)

要记住的要点

  • 这样您就可以使用区域进行搜索了。但这非常慢,因为您必须遍历所有元素。
  • 当您不想删除或修改元素时使用此选项。