python基础:list,map,open()文件读写

在这里插入图片描述

1, list

list.py

#定义 list集合: 方法1
bob=['bob,smith', 23, 30000, 'software']
sue=['sue,jones', 34, 40000, 'hardware']
people=[bob,sue]

#定义 list集合: 方法2
names=  ["name",    "age", "pay", "job"]
values1=["bob smith", 42,  30000, "software"]
values2=["sue jones", 34,  4000,  'hardware']
kvlist1=list( zip(names,values1) )#[('name', 'bob smith'), ('age', 42), ('pay', 30000), ('job', 'software')]
print(kvlist1[0][1]) #bob smith
kvlist2=list( zip(names,values2) )#[('name', 'sue jones'), ('age', 34), ('pay', 40000), ('job', 'hardware')]
print(kvlist2[0][1]) #sue jones

#取出值
name1=bob[0].split(',')[-1]
print("bob last name is ",name1) #bob last name is  smith

age= (sue[1]*2 )
print("sue age is",age)#sue age is 68

#从大集合中取出值
bobname=people[0][0] #bob,smith
print(bobname)

#遍历集合
for per in people:
    print(per[0],",", per[1],",", per[2]) # bob,smith , 23 , 30000     sue,jones , 34 , 40000

for per in people: per[1]*=2
for per in people: print(per[1])# (23, 34) ==> 46, 68

pays=[per[2] for per in people ]
print(pays)# [30000,40000]
print("--pay 的总和 ", sum( pays))  #70000

pays=map( (lambda x: x[2]) , people)
print( pays ) # <map object at 0x00C96050>
print(  list(pays) ) #[30000, 40000]


#列表的扩展
people.append(['tom willy', 45, 80000])
for per in people: print(per[0])

#使用下标
name, age ,pay =range(3)
print(name, age, pay) #0 1 2
print( bob[name] ) #bob,smith

############################################
#定义kv对
bob=[['name','bob smith'], ['age',32], ['pay',80000]]
sue=[['name','sue jones'], ['age',56],  ['pay',70000]]
people=[bob, sue]


#遍历list
for per in people:
    print(per[0][1]) #bob smith    sue jones

names= [per[0][1]  for per in people ]
print(names) #['bob smith', 'sue jones']

for per in people:
    for (name,value)  in  per: #['name','bob smith']  ['name','sue jones']
        if name=='name': print(value)

2, map

map.py

#定义字典:方法1
bob={"name":"bob smith", "age":42, "pay":30000, "job":"dev"}
sue={"name":"sue jones", "age":32, "pay":50000,  "job":"hdw"}

#定义字典:方法2
bob=dict(name="bob smith", age=42, pay=3000,  job="dev")
sue=dict(name="sue jones", age=32,  pay=50000, job="hdw")

#定义字典:方法3
bob={}
bob["name"]="bob smith"
bob["age"]=42
bob["pay"]="dev"

#定义字典:f\方法4
fields=("name", "age", "job", "pay")
record=dict.fromkeys(fields, "?")
print(record)#{'name': '?', 'age': '?', 'job': '?', 'pay': '?'}

#定义字典:方法4
names=["name","age", "pay", "job"]
values=["bob smith", 42, 30000, "dev"]
kvmap=dict(zip ( names, values)) #{'name': 'bob smith', 'age': 42, 'pay': 30000, 'job': 'dev'}
print(kvmap["name"])#bob smith

#取出字典的值:方法1
print(bob["name"], ",", bob['age']) #bob smith  42
print(bob["name"]) #bob smith
print(bob["name"].split()[-1]) #smith
print(sue["pay"]) # 5000

#取出字典的值: 方法2
msg1="name=>%s, age=%s"%(dict["name"], bob["age"])
msg2="name=>%(name)s, age=>%(age)s"%bob
msg3="name=>{name}, age={age}".format(**bob)
print(msg1)#name=>lisi, age=>32
print(msg2)#name=>lisi, age=>32
print(msg3)#name=>lisi, age=>32


# map中嵌套list
bob={
    "name":{"first":"bob",  "last":"smith"},
    "age":32,
    "job":["software","writing"],
    "pay":[40000, 50000]
}
print(bob["name"]["first"]) #bob
print(bob["pay"][1])#50000
for job in bob["job"]: print(job) #software  writing

bob["job"].append("hardware")
for job in bob["job"]: print(job) #software  writing hardware

#map 嵌套map
people={}
people["bob"]=bob
people["sue"]=sue
for value in people.values():#{'name': {'first': 'bob', 'last': 'smith'}, 'age': 32, 'job': ['software', 'writing', 'hardware'], 'pay': [40000, 50000]}
                             #{'name': 'sue jones', 'age': 32, 'pay': 50000, 'job': 'hdw'}
   for key in value.keys():
       print(key) #name, age, job, pay


for key in people.keys():
    print(key, people[key]) #sue {'name': 'sue jones', 'age': 32, 'pay': 50000, 'job': 'hdw'}
for item in people.items():
    print(item) #('sue', {'name': 'sue jones', 'age': 32, 'pay': 50000, 'job': 'hdw'})

3, map和list互相嵌套

list_map.py

#map
bob={"name":"bob jones", "age":32, "pay":30000, "job":"dev"}
sue={"name":"sue smith", "age":42, "pay":40000, "job":"dev"}
#list
people=[bob, sue]
db={"bob":bob, "sue":sue}

#遍历
for per in people:
    print(per["name"], per["age"], per["pay"], sep=", ") #bob jones, 32, 30000      sue smith, 42, 40000

for per in people:
    if per["name"]=="bob jones":
        print(per["pay"]) # 3000


names=[ per["name"] for per in people ]
print(names)#['bob jones', 'sue smith']

res=map( ( lambda x:x["name"]), people)
print(list(res))#['bob jones', 'sue smith']

sumpay=sum( per["pay"] for per in people)
print(sumpay)# 70000

names=[per["name"] for per in people if per["age"] >40 ]
print(names) #['sue smith']
names2=(per["name"] for per in people if per["age"]> 40 )
print(next(names2)) #sue smith

pays=[  (per["pay"]*2  if per["age"]> 40  else per["pay"] )     for per in people ]
print(pays) #[30000, 80000]

4, 文件读写

read_write.py

fileName="py-db.txt"

#保存数据
def save(db, fileName=fileName):
    output = open(fileName, "w")# w, r
    for per in db:
        print(per,  file=output)
        for(name, value) in db[per].items():
            print(name,value, sep=",",file=output)
        print("kv-over",file=output)

    print("db-over",file=output)
    output.close()

def read(fileName=fileName):
    inputstr=open(fileName)
    import sys
    sys.stdin=inputstr

    key=input()
    print(key)

    while(key  != "db-over"):
        field=input()
        while field != "kv-over":
            name, value= field.split(",")
            print("读入的数据=> ",name, value)
            field=input()
        key = input()
        print(key)

def read2(fileName=fileName):
    inputstr=open(fileName)
    import sys
    sys.stdin=inputstr

    db={}
    key=input()

    while(key  != "db-over"):
        person={}
        field=input()
        while field != "kv-over":
            name, value= field.split(",")
            person[name]=value
            field=input()
        db[key]=person
        key = input()
    print("db==== " , db)
    return db

if __name__== "__main__":
    #from chapter1.res.list_map import db
    # save(db)
    read2()
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值