我试图在python字典中使用一个对象作为键,但是它的行为方式让我无法完全理解。

首先,我创建一个以对象为键的字典:package_disseminators = {

ContentType("application", "zip", "http://other/property") : "one",

ContentType("application", "zip") : "two"

}

现在创建另一个对象,该对象与一个键“相同”。content_type = ContentType("application", "zip", "http://other/property")

我已经给了ContentType对象custom__eq__和custom__str__方法,以便__eq__方法比较__str__值。

现在,一些交互式python:>>> for key in package_disseminators:

... if key == content_type:

... print "match"

... else:

... print "no match"

...

no match

match

>>> content_type in package_disseminators.keys()

True

好吧,看来我的对象被正确地识别为一个密钥,所以:>>> package_disseminators[content_type]

Traceback (most recent call last):

File "", line 1, in

KeyError: (& (type="application/zip") (packaging="http://other/property") )

呃。。。好 啊?所以content_type在package_displaminators.keys()列表中,但它不是一个键吗?>>> package_disseminators.has_key(content_type)

False

显然不是。

我假设Python用于确定相等性的比较过程在列表上的直接“in”语句和实际在dict中查找键之间是不同的,但我不知道如何实现。有什么建议或见解吗?

python字典中的键是什么_在python字典中作为键的对象相关推荐

  1. python 定义字典键为变量_在python字典中使用变量作为键名

    我今天来是因为我有同样的问题.我必须说,我对这些答案很失望!我同意你的观点,这种冗余应该有一个惯用的解决方案.在这种情况下,JavaScript似乎比Python更明智.所以我想增加两个建议. 首先, ...

  2. python3 循环写入一对多键值对_为什么Python 3.6以后字典有序并且效率更高?

    在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面. 但是从Python 3.6开始,字典是变成 ...

  3. list python 访问 键值对_基础|Python常用知识点汇总(中)

    字符串字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.1.创建字符串 str1 = 'Hello World!' str2 = "Hello W ...

  4. python如何输入多行数据合并_关于Python中的合并字典,这些问题必须搞清楚!

    全文共1474字,预计学习时长6分钟 图源:unsplash Python 3.9现在处于初始开发阶段,但其中让人惊喜的新功能可不少.其中一个是颠覆性的,它能使处理Python字典时编写的代码更具可读 ...

  5. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  6. python中使用函数编程的意义_总结Python编程中函数的使用要点

    为何使用函数 最大化代码的重用和最小化代码冗余 流程的分解 编写函数 >>def语句 在Python中创建一个函数是通过def关键字进行的,def语句将创建一个函数对象并将其赋值给一个变量 ...

  7. python 找出列表中出现最多的元素_利用Python找出序列中出现最多的元素示例代码...

    前言 Python包含6种内置的序列:列表.元组.字符串 .Unicode字符串.buffer对象.xrange对象.在序列中的每个元素都有自己的编号.列表与元组的区别在于,列表是可以修改,而组元不可 ...

  8. python中raw是什么意思_对于Python中RawString的理解

    对于Python中RawString的理解 发布于 2016-01-11 06:56:27 | 100 次阅读 | 评论: 0 | 来源: PHPERZ Python编程语言Python 是一种面向对 ...

  9. python字典里可以放列表吗_学习python之列表及字典

    本关学习的是两种新的数据类型:列表.字典. 在开始之前先学习一下计算机与数据直接的关系. 计算机有3种方式利用数据: 1.直接使用数据 print('我来了') 2.计算和加工数据 print (1+ ...

  10. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

最新文章

  1. php使用curl可以get 模拟post
  2. HDU 5785 interesting
  3. 学习性代码和使用不存在的代码
  4. Essential fact about future of PhD studies
  5. java jlable添加gif,Java动画GIF而不使用JLabel
  6. python array操作,Python中数组的基本操作
  7. 1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
  8. BZOJ.4553.[HEOI2016TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
  9. (46)FPGA同步复位与异步复位(异步复位)
  10. Java 商户管理系统 客户管理 库存管理 销售报表 SSM项目源码
  11. Oracle exp/imp导出导入命令及数据库备份
  12. 接口自动化测试框架搭建(8、发送邮件方法的封装+HTMLTestRunnerCN)--python+HTMLTestRunnerCN+request+unittest+mock+db
  13. reactbootstrap php,什么是React-Bootstrap
  14. 考勤管理系统需求文档
  15. OAuth2 vs JWT,到底怎么选?
  16. imx6 linux内核定义debug口,IMX6Q 调试串口修改
  17. C语言之字符串(草稿)
  18. Aptana工具介绍
  19. MySQL 支持表情字符
  20. 基于HTML5的机器猫在线商城设计与实现

热门文章

  1. 剑指Offer的学习笔记(C#篇)-- 数组中重复的数字
  2. Cocos2d-x游戏开发之lua编辑器 Sublime 搭建,集成cocos2dLuaApi和自有类
  3. 基于Redis实现的抢购代码示例
  4. Shell expr的用法 bc 命令 let命令
  5. 关于Java的Object.clone()方法与对象的深浅拷贝,java面试题,java初级笔试题
  6. Angular5.0之 安装指定版本Angular CLI
  7. (转)Spring boot(一):入门篇
  8. 《Scikit-Learn与TensorFlow机器学习实用指南》第7章 集成学习和随机森林
  9. 笨办法学 Python · 续 练习 17:字典
  10. SpringBoot2.1.5(33)---SpringBoot整合 Thymeleaf 模板引擎