python - 用于存储信息和检索的字典的替代品?
问题描述
我正在尝试使用 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}
}
}
解决方案
您可能需要解释更多,因为我不明白为什么您只在每个字典中存储一个键值对。
可以使用元组创建多个值键。
(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,2,3), (1,3,2)]
print(partial_search([1]))
# search for two last digits of partial key as [3,2] --> [1,3,2]
print(partial_search([3,2], 1)
您可能可以像这样简化数据库。这取决于您要完成的工作:
database = {9:
{1:{100: "something",
200: "something else"},
2:{112: "something different",
153: "blank"}},
99: {},
100:{}
}
推荐阅读
- python - 存储对象如何定义为函数中的默认参数值
- java - Spring Batch 从 csv 文件中读取并在 Select 查询和插入查询中使用其数据
- next.js - “找不到命令:create-next-app”如何创建下一个应用程序?
- java - 如何遍历公会的每个成员并赋予他们一个角色。JDA
- javascript - 嗨,我在 cypress 中打开弹出窗口时遇到问题
- angular - 升级到 Angular 应用程序到 v10 错误
- javascript - 如何将 npm 包的静态资产发送到 nuxt 应用程序?
- python - 为什么我的 bash 执行的 python 脚本只将文件名输出到 txt 文件?
- java - 如何在 Spring Boot 中发送带有请求的 .p7b 格式客户端证书?
- dataweave - Dataweave 阵列差异