練習1: 熟悉字典文法:在終端中循環錄入商品資訊(名稱、價格),
如果名稱是空字元串,則停止。
– 将所有商品的名稱與價格列印出來(一個商品一行)
– 如果錄入了"遊戲機",則單獨列印其價格.
dict_commodity_info = {}
while True:
name = input("請輸入商品名稱:")
if name == "":
break
price = float(input("請輸入價格:"))
dict_commodity_info[name] = price
for k, v in dict_commodity_info.items():
print("%s商品的價格是%f" % (k, v))
if "遊戲機" in dict_commodity_info:
print(dict_commodity_info["遊戲機"])
練習2: 在終端中循環錄入人的資訊(名字、年齡、性别、體重…),
如果名稱是空字元串,則停止。
– 将所有人的資訊列印出來(一個人一行)
– 如果錄入了"張無忌",則單獨列印其資訊(名字、年齡、性别、體重…).
資料結構:
清單存一個元素,字典存兩個元素,将名字作為鍵,後邊三個元素存到清單作為字典的值元素
{ “張無忌”:[26,“男”,50],
“趙敏”:[24,“女”,40] }
dict_person_info = {}
while True:
name = input("請輸入人的名稱:")
if name == "":
break
age = int(input("請輸入年齡:"))
sex = input("請輸入性别:")
weight = float(input("請輸入體重:"))
dict_person_info[name] = [age, sex, weight]
for k_name, v_info in dict_person_info.items():
print("%s的年齡是%d,性别是%s,體重是%f" % (k_name, v_info[0], v_info[1], v_info[2]))
if "張無忌" in dict_person_info:
list_info = dict_person_info["張無忌"]
print("張無忌的年齡是%d,性别是%s,體重是%f" % (list_info[0], list_info[1], list_info[2]))
列印最後一個人的資訊(名字、年齡、性别、體重…)
優化資料結構(友善擷取鍵值)後:
資料結構:{ {“name”:“張無忌”,“age”:26,“sex”:“男”,“weight”:50},
{“name”:“趙敏”,“age”:24,“sex”:“女”,“weight”:40},}
清單
優點:擷取資料更為靈活(索引/切片)
缺點:周遊元素擷取資料,速度慢.
字典:
優點:根據key擷取值,速度快.
缺點:擷取資料不靈活(鍵)
因為散列更占記憶體
list_person_info = []
while True:
name = input("請輸入人的名稱:")
if name == "":
break
age = int(input("請輸入年齡:"))
sex = input("請輸入性别:")
weight = float(input("請輸入體重:"))
dict_info = {"name": name, "age": age, "sex": sex, "weight": weight}
list_person_info.append(dict_info)
for dict_item in list_person_info:
print("%s的年齡是%d,性别是%s,體重是%f" % (dict_item["name"], dict_item["age"], dict_item["sex"], dict_item["weight"]))
dict_person = list_person_info[-1]
print("%s的年齡是%d,性别是%s,體重是%f" % (dict_person["name"], dict_person["age"], dict_person["sex"], dict_person["weight"]))