提取前字典中的关键[Pythonic方法]

时间:2013-06-03 19:38:36

标签: python

什么是“pythonic”方法,在提取元素并在比较中使用它之前检查元素是否在字典中?

例如:

目前,我做

if "key1" in list2 and list2["key1"]=="5":
  print "correct"

如果失败,它将在第一个条件下短路。但是,这导致了长条件陈述。

是否有更“pythonic”的方法?我猜测在try catch中包含条件是一个更糟糕的想法。

4 个答案:

答案 0 :(得分:7)

不 - 尝试/除非绝对没问题:

try:
    if list2['key1'] == '5':
        # do something
except KeyError:
    # key wasn't found
except ValueError:
    # most likely value wasn't comparable...

答案 1 :(得分:6)

这种方法完全是pythonic。另一个略有不同的是

if list2.get("key1", <-1,0 or any sensible default, e.g. None>) == 5:
    print "correct"

使用这种方法,您可以使用dict.get方法,该方法允许从dict安全地提取值(并提供指定默认值的方法)

答案 2 :(得分:4)

if list2.get("key1")==5:
    print("correct")

但我不会把字典称为“list2”。

如果值可以为None,则可以选择其他默认值:

if list2.get("key1", object()) in my_other_list:
    print("correct")

或使用例外或“长”方式。

答案 3 :(得分:0)

在我看来,最狡猾的方式是

    print 'correct' if list2.get('key1') == 5