python中list,dict用法和格式化存储

本文介绍了一种使用Python进行简单数据存储的方法。通过字典来组织数据,并演示了如何使用不同的方式创建字典。此外,还展示了如何将数据存储到文件中以及如何从文件加载数据。文中涉及的技术包括pickle模块和shelve模块。
简单的数据存储化脚本

//数据源

bob={'name':"Bob smith","age":43,'pay':30000}
sue={'name':"Sue Jones","age":45,'pay':60000}
tom=dict(name='Tom',age=48,pay=65000)

#数据库
db={}
db['bob']=bob
db['sue']=sue
db['tom']=tom

if __name__=="__main__":
    for key in db:
        print(key,"=>",db[key])

#注意:这里数据字典
  字典的形式有几种: first:bob={'name':"Bob smith","age":43,'pay':30000}
                 second:tom=dict(name='Tom',age=48,pay=65000)
                 third:db={}   /n   db['bob']=bob
                 four time:dict(zip(name,value))
  字典的嵌套:      first:bob={"name":{'first name':'Bob','last name':'Smith'},'job':[12,'stu']}
                  second:bob['name']['first name']  bob['job'][1]  bob['job'].append('janitor')

  列表形式:
      1.列表的初始化:
         1).bob=['bob Smith',12,3000,'software']
         2).bob=[]  /n bob.append('')
         3).l = list((0, 1, 2, 3, 4, 5, 6, 7, 8, 9))
         4)[person[2] for person in people]
      2.列表的嵌套
         1).bob=[[21.35],'lihua',{'name':'lihua'}]
      3.列表的函数和方法
       函数:
       count(bob)    max(l)    min(l)   list(seq) //元组转化为列表
       方法:
           list.append()//添加元素  list.count()//求元素个素  list.extend()//列表末尾追加列表
           list.index(obj)//从列表中找出某个值第一个匹配项的索引位置   list.pop(obj=list[-1])//移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
           list.remove(obj)//移除列表中某个值的第一个匹配项  list.reverse()//反向列表中元素

#格式化输入数据
dbfilename="people-file"
ENDDB="enddb."
ENDREC="endrec."
RECSEP="=>"

def storeDbase(db,dbfilename=dbfilename):
    "将数据库格式化保存在普通文件中"
    dbfile=open(dbfilename,'w')
    for key in db:
        print(key,file=dbfile)
        for(name,value)in db[key].items():
            print(name+RECSEP+repr(value),file=dbfile)
        print(ENDREC,file=dbfile)
    dbfile.close()

def loadDbase(dbfilename=dbfilename):
    "解析数据,重新构建数据库"
    dbfile=open(dbfilename)
    import sys
    sys.stdin=dbfile
    db={}
    key=input()
    while key!=ENDDB:
        rec={}
        filed=input()
        while filed !=ENDREC:
            name,value=filed.split(RECSEP)
            rec[name]=eval(value)
            filed=input()
        db[key]=rec
        key=input()
    return db

if __name__=="__main__":
    from initdata import db
    storeDbase(db)

#使用pickle模块   皮撑开了模块将内存中的python对象转化成序列化的字节流

from initdata import db
import pickle
dbfile=open('people_pickle','wb')
pickle.dump(db,dbfile)
dbfile.close()


#使用shelve模块  自动的将对象pickle进和出键访问文件系统。
from initdata import bob,sue
import shelve
db=shelve.open('perple-shelve')
db['bob']=bob
db['sue']=sue
db.close()

转载于:https://my.oschina.net/puzhiyuan/blog/830811

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值