动态填充python字典

2024-10-02 06:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

如何用Python动态填充字典?例如,假设我想创建一个字典,它保存来自表格格式文本文件的数据。假设我正在创建一个APR生成器,并且我有一个包含特定数据的个人特征列表,存储如下(收入四舍五入为任意值):

Neighborhood    Income     Risk_Factor    APR
Brighton        20000      10             .196
Allston         28500      3              .094
...

现在,我想用字典查找某个人:

^{pr2}$

现在,我想查一下APR,从字典里给他们充电。检查人:

apr_charge["Allston"][25000][5] = 0.125

如何动态创建此词典?如前所述,现在假设我有另一份保险文件,但现在我不考虑收入。所以我会用相同的代码填充同一类型的字典,但是现在我少了一个嵌套的字典键。这可能吗?我想创建嵌套字典,而不需要事先知道嵌套的深度。在

编辑: 我意识到一个数据库可以用来存储这些信息。我想知道是否可以不使用数据库来处理这个问题。如果不可能的话,我需要一个可以存储到内存中的轻型数据库。(依赖性头痛越少越好。我无法完全控制运行此程序的环境。)


Tags: 数据数据库列表字典格式动态特征apr
2条回答

基本上,只需将字符串设为键,然后将该值设置为您要存储的任何其他值。在

myDict = {}
for i in lines:
    myDict[i[0]] = lines[1:-1]

这样,您就可以使用

^{pr2}$

使用数据库。这比你想象的要容易。在

sqlite是个不错的选择:

  1. 因为sqlite与Python一起提供,所以不会有额外的依赖关系。在
  2. 一个数据库将允许更容易地访问更灵活的 使用嵌套dict查询。例如,你可以问,什么 社区的风险系数大于8?或者什么(邻居, 收入、风险系数)元组的4月<;0.10。在
  3. 你的数据可以保存在一个文件中,并且是可以读取的格式 即使是用其他语言编写的程序 而不是Python。在
  4. 只要你不希望有很多用户试图读或写 同时你的数据库,sqlite应该是相当满意的 为了这个任务。在
  5. sqlite3数据库适配器具有excellent documentation,并符合Python Database API Specification v2.0。在
  6. SQLite理解的SQL语言有excellent documentation。在

以下是一些示例:

创建数据库表:

import sqlite3

with sqlite3.connect('apr.sqlite') as connection:
    cursor = connection.cursor()
    cursor.execute('''CREATE TABLE aprtable
                      (id INTEGER PRIMARY KEY AUTOINCREMENT,
                      neighborhood TEXT,
                      income INTEGER,
                      risk_factor INTEGER,
                      apr FLOAT)''')

或者,只在内存中创建数据库:

^{pr2}$

将数据插入表中:

sql = 'INSERT INTO aprtable (neighborhood, income, risk_factor, apr) value (?,?,?,?)'
args = ['Brighton', 20000, 10, 0.196]
cursor.execute(sql, args)

还可以查看executemany方法。在

要找到给定邻里、收入和风险因素的apr:

sql = 'SELECT apr FROM aprtable WHERE neighborhood = ? and income = ? and risk_factor = ?'
args = ['Allston', 25000, 5]
cursor.execute(sql, args)
row = cur.fetchone()
if row is not None:
    apr = row[0]

根据邻里、收入和风险因素改变apr:

sql = 'UPDATE aprtable SET apr = ? WHERE neighborhood = ? and income = ? and risk_factor = ?'
args = [0.125, 'Allston', 25000, 5]
cursor.execute(sql, args)

要找出哪些社区有风险因素>;8:

sql = 'SELECT neighborhoods from aprtable where risk_factor > ?'
args = [8]
cursor.execute(sql, args)
neighborhoods = cur.fetchall()

要了解APR<;0.10的(邻里、收入、风险系数)值:

sql = 'SELECT neighborhood, income, risk_factor FROM aprtable WHERE apr < ?'
args = [0.10]
cursor.execute(sql, args)
for neighborhood, income, risk_factor in cursor:
    print(neighborhood, income, risk_factor)

相关问题 更多 >

    热门问题