$20
、姿君有$25
、毛毛有$10
$15
、姿君儲值$5
# 有幾個人就用幾個物件儲存
money_Mars = 20
money_姿君 = 25
money_毛毛 = 10
money_Mars+=15
money_姿君+=5
print("Mars",money_Mars)
print("姿君",money_姿君)
print("毛毛",money_毛毛)
Mars 35 姿君 30 毛毛 10
l = [["Mars",20],["姿君",25],["毛毛",10]]
# Mars 儲值 15元, 再來是 姿君儲值 5元
l[0][1]+=15
l[1][1]+=5
print(l)
[['Mars', 35], ['姿君', 30], ['毛毛', 10]]
# 比較有彈性
l = [["姿君",25],["Mars",20],["毛毛",10]]
for member in l:
if member[0]=="Mars":
member[1]+=15
for member in l:
if member[0]=="姿君":
member[1]+=5
print(l)
[['姿君', 30], ['Mars', 35], ['毛毛', 10]]
d[key]
:字典以鍵值key去存取資料value,很像是串列的索引indexint
、float
、str
、tuple
)d = {"Mars":20,"姿君":25,"毛毛":10}
d["Mars"] += 15
d["姿君"] += 5
print(d)
print(d["Mars"],d["姿君"])
{'姿君': 30, '毛毛': 10, 'Mars': 35} 35 30
d = {} # 空字典
d["Mars"] = 20
d["姿君"] = 25
d["毛毛"] = 10
print(d)
print(len(d))
{'姿君': 25, '毛毛': 10, 'Mars': 20} 3
print(d['MarsW'])
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-6-8ab309ac3ada> in <module>() ----> 1 print(d['MarsW']) KeyError: 'MarsW'
水果庫存、價格都以字典型別儲存,
請計算若水果都賣出後,可賺進多少錢?
stock={
"banana":5,
"apple":3,
"orange":10
}
price={
"banana":5,
"apple":20,
"orange":15
}
revenue = 0
revenue += stock["____"] * price["____"]
revenue += stock["____"] * price["____"]
revenue += stock["____"] * price["____"]
print(revenue)
d = {"Mars":20,"姿君":25,"毛毛":10}
itb=iter(d)
print(next(itb))
print(next(itb))
print(next(itb))
姿君 毛毛 Mars
d = {"Mars":20,"姿君":25,"毛毛":10}
for key in d:
print(key,d[key])
姿君 25 毛毛 10 Mars 20
水果庫存、價格都以字典型別儲存,
請計算若水果都賣出後,可賺進多少錢?
stock={
"banana":5,
"apple":3,
"orange":10
}
price={
"banana":5,
"apple":20,
"orange":15
}
revenue = 0
for fruit in stock:
revenue += stock[____] * price[____]
print(revenue)
l = [["姿君",25],["Mars",20],["毛毛",10]]
d = {}
for item in l:
name = item[0]
score = item[1]
d[name]=score
print(d)
{'姿君': 25, '毛毛': 10, 'Mars': 20}
l = [["姿君",25],["Mars",20],["毛毛",10]]
d = {}
for name,score in l:
d[name]=score
print(d)
{'姿君': 25, '毛毛': 10, 'Mars': 20}
遊戲中計分,第一回合:A得10分、第二回合B得5分...,最後要加總算分數。
l = [["A",10],["B",5],["C",23],["B",7],["A",6],["A",3],["C",2]]
答案是:
C的得分25
B的得分12
A的得分19
l = [["A",10],["B",5],["C",23],["B",7],["A",6],["A",3],["C",2]]
d = {"A":0, "B":0, "C":0}
for _____ in l:
...
...
for key in d:
print("{}的得分{}".format(key,d[key]))
l = [["A",10],["B",5],["C",23],["B",7],["A",6],["A",3],["C",2]]
d = {}
for name,score in l:
if name not in d: # 檢查是否存在這個玩家
d[name]=0 # 不存在就把他的得分設為預設值0
d[name]+=score
for key in d:
print("{}的得分{}".format(key,d[key]))
B的得分12 C的得分25 A的得分19
score_log = """
A,10
B,5
C,23
B,7
A,6
A,3
C,2
"""
l = []
for line in score_log.split("\n"):
print(line.split(","))
if len(line.split(","))==2:
# if "," in line:
name,score = line.split(",")
l.append([name,int(score)])
print(l)
[''] ['A', '10'] ['B', '5'] ['C', '23'] ['B', '7'] ['A', '6'] ['A', '3'] ['C', '2'] [''] [['A', 10], ['B', 5], ['C', 23], ['B', 7], ['A', 6], ['A', 3], ['C', 2]]
datetime = "Oct 18"
month,date = datetime.split(" ")
month = month.replace("Oct","10")
format_date = "{}/{}".format(month,date)
print (format_date)
10/18
datetime = "Oct 18"
month,date = datetime.split(" ")
month_dict = {
#......
"10":["Oct","October"],
"11":["Nov","November"],
"12":["Dec","December"],
}
for key in month_dict:
print(key,month_dict[key])
for keyword in month_dict[key]:
if month==keyword:
month = month.replace(month,key)
format_date = "{}/{}".format(month,date)
print (format_date)
10 ['Oct', 'October'] 12 ['Dec', 'December'] 11 ['Nov', 'November'] 10/18
d = {"A":1, "B":2, "C":3}
print(d)
{'B': 2, 'C': 3, 'A': 1}
d = {}
d["A"]=1
d["B"]=2
d["C"]=3
print(d)
d["A"]=4
print(d)
{'B': 2, 'C': 3, 'A': 1} {'B': 2, 'C': 3, 'A': 4}
d = dict(A=1,B=2,C=3)
print(d)
d = dict(d,D=4)
d = dict(d,A=5)
print(d)
{'B': 2, 'C': 3, 'A': 1} {'B': 2, 'C': 3, 'D': 4, 'A': 5}
zip(序列1,序列2)
¶l1 = ["A","B","C"]
l2 = [1,2,3]
d = dict(zip(l1,l2))
print(d)
{'B': 2, 'C': 3, 'A': 1}
字典.fromkeys(序列,default)
¶None
l = ["A","B","C"]
d = dict.fromkeys(l)
print(d)
{'B': None, 'C': None, 'A': None}
l1 = ["A","B","C"]
d = {"D":0}
d = d.fromkeys(l1,0) # d 改指向此 新生成的字典
print(d)
{'B': 0, 'C': 0, 'A': 0}
d1 = {"A":[0,1], "B":2, "C":3}
d2 = d1.copy()
d2["A"][0]=4
d2["B"]=5
print("d1",d1)
print("d2",d2)
d1 {'B': 2, 'C': 3, 'A': [4, 1]} d2 {'B': 5, 'A': [4, 1], 'C': 3}
del
¶a = 1
d = {"A":a, "B":2, "C":3}
print(id(a))
print(id(d["A"]))
del d["A"]
print(id(a))
10105824 10105824 10105824
d = {"A":1, "B":2, "C":3}
del d["A"]
print(d)
del d
print(d)
{'B': 2, 'C': 3}
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-23-057a4fe636f5> in <module>() 3 print(d) 4 del d ----> 5 print(d) NameError: name 'd' is not defined
字典.clear()
¶d = {"A":1, "B":2, "C":3}
d.clear()
print(d)
{}
字典.pop(key,default)
¶d = {"A":1, "B":2, "C":3}
print(d.pop("A"))
print(d)
print(d.pop("D",4))
print(d.pop("D"))
1 {'B': 2, 'C': 3} 4
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-25-b095244c2c18> in <module>() 3 print(d) 4 print(d.pop("D",4)) ----> 5 print(d.pop("D")) KeyError: 'D'
字典.popitem()
¶# 隨機取出,因為字典沒有順序
d = {"A":1, "B":2, "C":3}
tmp = d.popitem()
print(tmp,type(tmp))
print(d.popitem())
print(d.popitem())
('B', 2) <class 'tuple'> ('C', 3) ('A', 1)
字典.setdefault(key,default)
¶None
d = {"A":1, "B":2, "C":3}
d["D"]=None
print(d.setdefault("E"))
print(d.setdefault("F",4))
print(d.setdefault("C",5))
print(d)
None 4 3 {'F': 4, 'B': 2, 'D': None, 'C': 3, 'E': None, 'A': 1}
d1 = {"A":1, "B":2, "C":3}
d2 = {
"B":4,
"C":5,
"D":6
}
d1.update(d2)
print(d1)
{'B': 4, 'C': 5, 'D': 6, 'A': 1}
d = {"A":1, "B":2, "C":3}
d.update(B=4,C=5,D=6)
print(d)
{'B': 4, 'C': 5, 'D': 6, 'A': 1}
字典[key]
:key不存在會報錯字典.get(key,default)
:key不存在會回傳defaultNone
d = {"A":1, "B":2, "C":3}
print(d["A"])
print(d.get("A"))
1 1
d = {"A":1, "B":2, "C":3}
print(d.get("D"))
print(d.get("D",0))
print(d["D"])
None 0
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-31-628ad431d9da> in <module>() 2 print(d.get("D")) 3 print(d.get("D",0)) ----> 4 print(d["D"]) KeyError: 'D'
ticket_type="敬老票"
if ticket_type=="學生票":
price=270
elif ticket_type=="敬老票":
price=250
else:
price=300
print("{}價格為{}".format(ticket_type,price))
敬老票價格為250
ticket_type="敬老票"
d = {"學生票":270,"敬老票":250}
price = d.get(ticket_type,300)
print("{}價格為{}".format(ticket_type,price))
敬老票價格為250
from collections import defaultdict
d = defaultdict(物件型別)
None
字典[key]
也沒關係=>會生成預設值from collections import defaultdict
print("int()的預設值為",int())
d = defaultdict(int)
print(d)
print(d["a"])
print(dict(d))
int()的預設值為 0 defaultdict(<class 'int'>, {}) 0 {'a': 0}
可以改寫前面的遊戲計分練習題
l = [["A",10],["B",5],["C",23],["B",7],["A",6],["A",3],["C",2]]
d = {}
for name,score in l:
if name not in d: # 檢查是否存在這個玩家
d[name]=0 # 不存在就把他的得分設為預設值0
d[name]+=score
for key in d:
print("{}的得分{}".format(key,d[key]))
B的得分12 C的得分25 A的得分19
from collections import defaultdict
d = defaultdict(int)
for name,score in l:
d[name]+=score
for key in d:
print("{}的得分{}".format(key,d[key]))
B的得分12 C的得分25 A的得分19
from collections import defaultdict
print("list()的預設值為",list())
d = defaultdict(list)
print(d["a"])
print(dict(d))
list()的預設值為 [] [] {'a': []}
from collections import defaultdict
l = [("David",70),("Mars",58),("Kelly",90),("Bob",40),("Amy",58)]
d = defaultdict(list)
for name,score in l:
d[score].append(name)
for key in d:
print("{}分 的學生有 {}".format(key,",".join(d[key])))
40分 的學生有 Bob 58分 的學生有 Mars,Amy 90分 的學生有 Kelly 70分 的學生有 David
d = {}
d["A"]=1
d["B"]=2
d["C"]=3
print(d)
{'B': 2, 'C': 3, 'A': 1}
from collections import OrderedDict
d = OrderedDict()
d["A"]=1
d["B"]=2
d["C"]=3
print(d)
OrderedDict([('A', 1), ('B', 2), ('C', 3)])
OrderedDict.move_to_end(key,last)
¶from collections import OrderedDict
d = OrderedDict([('A', 1), ('B', 2), ('C', 3)])
d.move_to_end('B')
print(d)
d.move_to_end('B', last=False)
print(d)
OrderedDict([('A', 1), ('C', 3), ('B', 2)]) OrderedDict([('B', 2), ('A', 1), ('C', 3)])
OrderedDict.popitem(last)
¶from collections import OrderedDict
d = OrderedDict([('A', 1), ('B', 2), ('C', 3)])
print(d.popitem())
print(d.popitem(False))
print(d)
('C', 3) ('A', 1) OrderedDict([('B', 2)])
from collections import OrderedDict
d = OrderedDict([('A', 1), ('B', 2), ('C', 3)],D=4,E=5,F=6)
print(d)
OrderedDict([('A', 1), ('B', 2), ('C', 3), ('F', 6), ('E', 5), ('D', 4)])
from collections import OrderedDict
d = OrderedDict([('A', 1), ('B', 2), ('C', 3)])
d.update(D=4,E=5,F=6)
print(d)
OrderedDict([('A', 1), ('B', 2), ('C', 3), ('F', 6), ('E', 5), ('D', 4)])
data = {"name":"Mars","birth":1990}
print("{name} 是 {birth} 年生 ".format(name="Mars",birth=1990))
print("{name} 是 {birth} 年生 ".format(**data))
Mars 是 1990 年生 Mars 是 1990 年生