使用键为 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}
查字典就知道了:
(因为 True
和 1
作为同一个被删除,因为 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 键的不同约定)。
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}
查字典就知道了:
(因为 True
和 1
作为同一个被删除,因为 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 键的不同约定)。