词典用于存储信息和检索的替代方法?

我正在尝试使用python中的字典创建一个很小的“数据库”,最终将其存储为json / text。

现在,它仅将键(str或int)和值存储为更多词典和列表的列表。但是由于dict仅存储两个项目(键和值),是否可以在不创建新的dict或列表进行数据检索的情况下添加第三个项目?我曾想过将键更改为两个值的列表,但不知道如何搜索键。我不想添加更多列表和字典,以使其更难以解析。

我需要使用其他东西代替字典吗?还是我只是在想这一切错了?

DataBase = [
    {9: [
        {1: [
            {100: "something"},{200: "something else"}
            ]
        },{2: [
            {112: "something different"},{153: "blank"}
            ]
        }
    ]
    },{99: [{}]},{100: [{}]}
]
简而言之,我想做的是从csv和电子表格中提取数据,并放入某种数据库中以便于读写。因此,我认为这是我能想到的最好的方法,不知道我是否可以进一步改进。

例如: 国家/地区,美国,​​州,纽约州,城市,纽约市,邮政编码,10001,姓名,约翰

    {(Country,USA):
          {(State,NY):
               {(City,NYC):
                    {(Zip,10001): {Name: John},(Zip,11001): {Name: Jane}}
                }
           {(State,LA): {(City,notNYC):
                    {(Zip,00001): {Name: Joe,Name: Jame}
           }
    }
yeluogui1236 回答:词典用于存储信息和检索的替代方法?

您可能需要解释更多,因为我不明白为什么您在每个字典中只存储一个键值对。

可以使用元组创建多个值键。

(key1,key2,key3,keyn) : "some value"

一种搜索方式是使用过滤器。

database_triplets = {
             (1,2,3):"123",(1,3,2):"132",(2,9,8):"298"}

"""
partial_search(query,start_index = 0):
inputs:
     query: List with search terms.
     start_index: which index of key to look for the query (0 as default)
"""
def partial_search(query,start_index = 0):
    query_len =  len(query)

    """ tuples of lenght 1 are a little strange ie. (1,). 
        Therefore the input is list
    """
    query = tuple(query) 
    search_results =  list(filter(lambda x: x[start_index: start_index + query_len] == tuple(query),database_triplets))
    return search_results

# search for first partial key as 1 --> [(1,3),2)]
print(partial_search([1])) 
# search for two last digits of partial key as [3,2] --> [1,2] 
print(partial_search([3,2],1) 

您可能可以像这样简化数据库。这取决于您要完成的工作:

database =  {9: 
                {1:{100: "something",200: "something else"},2:{112: "something different",153: "blank"}},99: {},100:{}
}
本文链接:https://www.f2er.com/3130852.html

大家都在问