字典里的键可以是数字,字符串,也可以是元组:其对应的值可以是Python支持的任何类型对象,如除了数字,字符串,也可以是列表,元组,或者字典。因此产生了字典嵌套使用问题。
字典嵌套字典
在多重关系,多行记录下可以考虑字典嵌套字典的方式。
如一个餐厅有很多桌子,每一个桌子又对应着若干个消费者就餐记录。显然一个餐厅就记录着两层关系,首先一个桌子对应的若干消费记录可以看成一行数据,N行就有n个消费记录。
1号桌:龙:消费100,张:消费200,李:消费300
2号桌:王:消费300,tom:消费400,mike:消费500
3号桌:郭:消费400,何:消费600
计算消费总额
代码如下:
no1 = {"long":100,"zhang":200,"li":300}
no2 = {"wang":300,"tom":400,"mike":500}
no3 = {"guo":400,"he":600}
rest = {"1号":no1,"2号":no2,"3号":no3}
total = 0
for get_value in rest.values():
total = total + sum(get_value.values())
print(total)
每一桌消费情况记录在no里,一个餐厅rest就有n个no。这样更方便的体现了数据之间的关系,更体现了字典记录数据的灵活性。
列表嵌套字典
就上述事例,若老板不关系就餐者是谁,只关心每一桌的就餐情况,那么我们可以采用列表嵌套字典的方式。代码如下:
L1 = [30.5,20,40.5]
L2 = [20,25.1,25]
L3 = [10,13,16.2]
rest2 = {"1号桌消费":L1,"2号桌消费":L2,"3号桌消费":L3}
for get_k,get_v in rest2.items():
print("%s:%.2f"%(get_k,sum(get_v)))
每一桌消费情况记录在列表L中,一个餐厅rest2就有n桌
字典嵌入列表
若餐厅经理想要了解每桌就餐情况,就可以采用字典嵌入列表的方式。代码如下:
no1 = {"long":100,"zhang":200,"li":300}
no2 = {"wang":300,"tom":400,"mike":500}
no3 = {"guo":400,"he":600}
rest3=[no1,no2,no3]
i=0
sum1=0
r_L=len(rest3)
get_d={}
while i < r_L:
get_d=rest[i]
sum1=sum1+sum(get_d.values())
print(get_d)
print("第%d桌消费:%d"%(i+1,sum1))