字典里的键可以是数字,字符串,也可以是元组:其对应的值可以是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))