【字典嵌套】

字典嵌套

字典的键可以是简单的数字、字符串,也可以是元组;基对应的值可以是Python语言支持的任何类型对象,如除了数字、字符串、还可以是列表、元组、字典等。由此产生了字典嵌套使用的问题。这里主要介绍字典嵌入字典、列表嵌入字典、字典嵌入列表三种情况的用法。

字典嵌入字典

在多重关系、多行记录的情况下,可以考虑字典嵌入字典的方法,如表所示为一家餐厅就餐记录内容。一个餐厅的每张桌子对应着若干个顾客的就餐记录,每个顾客对应着消费金额,显然一个餐厅记录数据涉及两层关系,一张桌子的若干消费记录卸任一行记录,那么N张桌子有N行记录,属于多行记录情况。就餐餐

no1 = {'张三':35.5, '李四':200, '王五':800}
no2 = {'Tom':99.8, 'John':183,'Jim':429}
no3 =  {'阿毛':12, '阿狗':33}
rest = {'1号':no1, '2号':no2, '3号':no3}
rest
{'1号': {'张三': 35.5, '李四': 200, '王五': 800},
 '2号': {'Tom': 99.8, 'John': 183, 'Jim': 429},
 '3号': {'阿毛': 12, '阿狗': 33}}

字典嵌入字典记录数据的方式具有如下优点.
1)可以很方便体现数据之间的关系,如"1号"桌对应的就餐记录在字典变量no1里, 而no1里记录了三个消费者消费信息.
2)体现了字典记录数据的灵活性,如横向的可以记录两个消费者的记录,也可以记录三个消费者的记录;竖向的可以记录三行记录,也可以记录五行 ,十行…
在上述代码的基础上继续统计当天该餐厅的总消费额.

no1 = {'张三':35.5, '李四':200, '王五':800}
no2 = {'Tom':99.8, 'John':183,'Jim':429}
no3 =  {'阿毛':12, '阿狗':33}
rest = {'1号':no1, '2号':no2, '3号':no3}
rest
total = 0
for get_values in rest.values():
    total += sum(get_values.values())
print("餐厅今天营业额为{:.2f}".format(total))
餐厅今天营业额为1792.30

列表嵌入字典

若餐厅老板不关心就餐者是谁,只关心每一桌一天的收入多少,则可以采用列表嵌入字典的方式来实现.

L1 = [35.5, 200, 800]
L2 = [99.8, 183, 429]
L3 = [12, 33]
rest = {'1号桌消费':L1, '2号桌消费':L2, "3号桌消费":L3}

for get_k, get_L in rest.items():
    print("{}:{:.2f}元".format(get_k, sum(get_L)))
    dict_items([('1号桌消费', [35.5, 200, 800]), ('2号桌消费', [99.8, 183, 429]), ('3号桌消费', [12, 33])])
1号桌消费:1035.502号桌消费:711.803号桌消费:45.00

字典嵌入列表

若该餐厅的客户经理想了解一下每桌就餐明细,并分类统计每桌消费额,则可以采用吓方法:

no1 = {'张三':35.5, '李四':200, '王五':800}
no2 = {'Tom':99.8, 'John':183,'Jim':429}
no3 =  {'阿毛':12, '阿狗':33}
list1 = [no1, no2, no3]
list1
i = 0
total = 0
r_L =len(list1)
get_d = {}
sum1 = 0
while i < r_L:
    get_d = list1[i]
    sum1 =sum(get_d.values())
    total += sum1
    print(get_d)
    print("第{}桌日消费:{:.2f}".format(i+1, sum1))
    i +=1

print("该餐厅日消费总额为:{}".format(total))
{'张三': 35.5, '李四': 200, '王五': 800}1桌日消费:1035.50
{'Tom': 99.8, 'John': 183, 'Jim': 429}2桌日消费:711.80
{'阿毛': 12, '阿狗': 33}3桌日消费:45.00
{'阿毛': 12, '阿狗': 33}
该餐厅日消费总额为:1792.3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值