使用键为 True 和整数键为 1 访问字典时出现问题

Problem in accessing Dictionary with key as True and Integer key as 1

MyCODE


   mydict={True:'Visa',2:"verified",1:'Married',(111,222):'dept1 office 2'}
   print(f"mydict.get(True)---> {mydict.get(True)}")
   print(f"mydict.get(2)---> {mydict.get(2)}")
   print(f"mydict.get(1)---> {mydict.get(1)}")
   print(f"mydict.get((111,222))---> {mydict.get((111,222))}")

输出

mydict.get(True)---> Married
mydict.get(2)---> verified
mydict.get(1)---> Married
mydict.get((111,222))---> dept1 office 2

我的问题是为什么 mydict.get(True)---> 已婚...应该是签证吧...为什么会这样?

Python 中最棒的表演效果之一,基于不能有多个相等键(如 ==-equal)

>>> {1: "one", True: "true", 1.0: "ok", 0.99999999999999999: "weird"}
{1: 'weird'}  # 

如果多次遇到相同的键(通过 == 进行相等性测试),第一个键“获胜”,但最后一个值:

>>> d = {1: 2}
>>> d[True] = 5
>>> d
{1: 5}

>>> d = {True: 2}
>>> d[1] = 5
>>> d
{True: 5}

查字典就知道了:

(因为 True1 作为同一个被删除,因为 dict 中不能有两个键)

>>> mydict={True:'Visa',2:"verified",1:'Married',(111,222):'dept1 office 2'}
    
>>> mydict    
{True: 'Married', 2: 'verified', (111, 222): 'dept1 office 2'}

您可以使用不同的密钥,例如 False:

mydict={False:'Visa',2:"verified",1:'Married',(111,222):'dept1 office 2'}
print(f"mydict.get(False)---> {mydict.get(False)}")
print(f"mydict.get(2)---> {mydict.get(2)}")
print(f"mydict.get(1)---> {mydict.get(1)}")
print(f"mydict.get((111,222))---> {mydict.get((111,222))}")

输出:

mydict.get(False)---> Visa
mydict.get(2)---> verified
mydict.get(1)---> Married
mydict.get((111,222))---> dept1 office 2

你不能在 dict 中有多个键,如果你这样定义,第一个键保持并继续下一步,下一个,...和 ​​select 最后一个值:

>>> dct = {True : 1, 1 : 2 , 1.0 : 3, 0 : 4, False : 5, 2.0 : 6, 2 : 7}
>>> dct
{True: 3, 0: 5, 2.0: 7}

数据类型不是字典中数字键散列的区分因素。[​​=13=]

以下词典:

{True:'A', 1:'B', 1.0:'C'}

实际上最终是:

{True: 'C'}

因为当您多次提供相同的密钥时,最后一个值会更新初始密钥。因此,值 1 被认为是相同的,无论它是布尔值、整数还是浮点数。这与比较运算符一致:True == 1 == 1.0

如果您想要进行区分,则需要将所有内容都转换为字符串或将数据类型添加为键的一部分(两者似乎都不太好,因此您可能需要使用True 键的不同约定)。