免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3478 | 回复: 7
打印 上一主题 下一主题

py想取得值对应的键,有没有什么好办法? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-27 23:43 |只看该作者 |倒序浏览
本帖最后由 iix 于 2010-05-27 23:50 编辑

如:dic={8: 12, 1: 2, 2: 0, 4: 9, 5: 3}
现在想取得值“9”对应的键,有没有什么好办法?
注一:此值唯一;
注二:可不可以不使用键值反转和循环的办法?

论坛徽章:
0
2 [报告]
发表于 2010-05-28 00:24 |只看该作者
没想到什么好的方法……除非另定义一个反向dict,以空间换时间……

论坛徽章:
0
3 [报告]
发表于 2010-05-28 09:16 |只看该作者
key = dic.keys()
value = dic.values()
key[value.index(9)]

论坛徽章:
0
4 [报告]
发表于 2010-05-28 09:24 |只看该作者
写个工厂函数就可以了
  1. def getkey(mydict, vals):
  2.     for key,val in mydict.items():
  3.         if val == vals:
  4.             return key

  5.     return False
复制代码

论坛徽章:
0
5 [报告]
发表于 2010-05-28 10:47 |只看该作者
建议建成自己的工具库,以后就可以直接调用。

论坛徽章:
0
6 [报告]
发表于 2010-05-28 12:46 |只看该作者
本帖最后由 jjj137 于 2010-06-02 16:23 编辑

三楼的方法很不错啊,不知道index效率如何,不过看起来很清爽。

#嗯,确实没想到楼下两位的问题……

论坛徽章:
0
7 [报告]
发表于 2010-06-02 11:13 |只看该作者
回复 3# TMBest

会不会出现排序出现问题,然后key和value不对应啊?

论坛徽章:
0
8 [报告]
发表于 2010-06-02 12:32 |只看该作者
还是老老实实的循环判断或者使用反向dict比较可靠。
我们不知道dict内部有无实现keys和values的对应逻辑,文档上好像也没有提及, 所以用index是有风险的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP