在Python中处理未声明的dict键
在我的Ruby应用程序中,我有一个哈希表:在Python中处理未声明的dict键,python,exception,exception-handling,Python,Exception,Exception Handling,在我的Ruby应用程序中,我有一个哈希表: c={:sample=>1,:other=>2} 我可以这样处理桌子: [c[:sample].nil?,c[:另一个].nil?,c[:不在列表中].nil?] 我正试图用Python做同样的事情。我创建了一本新词典: c = {"sample":1, "another":2} 我无法处理以下项的零值异常: c["not-in-dictionary"] 我试过这个: c[:not_in_dictionery] is not None 它返回
c={:sample=>1,:other=>2}
我可以这样处理桌子:
[c[:sample].nil?,c[:另一个].nil?,c[:不在列表中].nil?]
我正试图用Python做同样的事情。我创建了一本新词典:
c = {"sample":1, "another":2}
我无法处理以下项的零值异常:
c["not-in-dictionary"]
我试过这个:
c[:not_in_dictionery] is not None
它返回的是一个异常,而不是
False。
如何处理此问题?在您的特定情况下,您可能应该这样做,而不是与无进行比较:
"not_in_dictionary" in c
如果您确实在使用此代码,它将不起作用:
c[:not_in_dictionary] is not None
Python没有专门的:
关键字作为字典键;而是使用普通字符串
Python中的常见行为是在请求缺少密钥时引发异常,并让您处理该异常
d={“a”:2,“c”:3}
尝试:
打印d[“b”]
除KeyError外:
打印“我们的字典里没有b!”
如果要获取None
如果缺少值,可以使用dict
的.get
方法在缺少键时返回值(None
)
打印d.get(“a”)#打印2
打印d.get(“b”)#不打印任何内容
打印d.get(“b”,0)#打印0
要仅检查某个键在dict
中是否有值,请使用中的或不在关键字
用d#True打印“a”
在d#False中打印“b”
打印“c”而不是d#假
打印“d”不是d#True
Python包含一个模块,允许您定义在正常使用时返回默认值而不是错误的字典:。您可以这样使用它:
导入集合
d=collections.defaultdict(lambda:None)
在d#False中打印“b”
打印d[“b”]#无
打印d[“b”]==无#真
用d#True打印“b”
请注意
中的的混乱行为。当您第一次查找一个键时,它会将其添加到指向默认值的位置,因此现在在dict
中它被认为是,d.get(“a”,无)
是,umh,过度指定的。它相当于d.get(“a”)
。默认值只需要第二个参数(而不是None
,可以说这是默认值)。也许defaultdict也值得一提。@Jeremy Banks谢谢。我还需要一个答案。如果变量存在,我想返回True?。有什么办法吗?@shajin那只是d中的“变量”
!:)@杰里米·班克斯:我们怎样才能写出与dist相反的contains?比如“if'False'不包含在dist中”。我尝试了if!dist.uuu包含uuu(“假”)。生成错误:)