python字典程序成绩查询系统_基于值的字典中的python查询键

Lets have a following dict:

table = {x1: {y1: 1, y2:2},

x2: {y1: 3, y2:4},

x3: {y3: 5, y2:6}

}

Considering the values are unique, is there any way to query the key path based on the value efficiently or it is better to reconstruct the dict using the value as the key?

Example:

result = magic_function(table, 3)

result --> [x2, y1]

Thanks,

解决方案

The idiomatic way to "invert" a dictionary is like this:

i = {v: k for (k, v) in d.items()}

If you're in Python 2 rather than 3, and d might be big, use iteritems instead.

In your case, you've got a dict of dicts, and you want to sort of double-invert it into a dict of paths, if I understand correctly. But you don't know how to write that. So, let's start by writing it explicitly, the long way:

i = {}

for k, v in d.items():

for k2, v2 in v.items():

i[v2] = (k, k2)

You can convert this into a dictionary comprehension, but you want it to be something you actually understand, rather than some magic invocation you copy and paste without thinking, so I'll leave that part up to you (but I'll be glad to help if you have any questions).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值