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()