没有if语句,如何找到字典中存在哪个键?

时间:2019-03-31 10:03:33

标签: python python-3.x

我有一个字典,并且知道该字典中只有N个键之一。该任务是查找并保存现有键的值。

我编写了以下蛮力代码,但我相信应该有一个不错的oneliner之类的东西:

final_key = None
for key in ['aa', 'bbb', 'cccc', 'ddddd', 'e']:
   if key in dict:
      final_key = key
      break

8 个答案:

答案 0 :(得分:3)

您可以通过设置操作来做到这一点:

set(dict).intersection(['aa', 'bbb', 'cccc', 'ddddd', 'e'])

答案 1 :(得分:2)

您可以尝试以下操作:

next(x in your_list if x in dict)

它会生成一个迭代器,并且只会找到它的第一个元素。

答案 2 :(得分:1)

该代码段遍历字典键,并返回给定列表中包含的键。

next(
   x for x in
   dictionary.keys()
   if x in ['aa', 'bbb', 'cccc', 'ddddd', 'e']
)

答案 3 :(得分:1)

只是为了回答答案,但这绝不是一个好方法。

try:   
    dict[key] 
except KeyError:
    print("Key doesn't exist")

答案 4 :(得分:0)

您还可以将filterget方法一起使用,以找到字典的键:

final_key = list(filter(lambda key: not dict.get(key,None) is None, ['aa', 'bbb', 'cccc', 'ddddd', 'e']))[0]

注意:您不应使用dict作为变量名,因为它是Python的保留关键字。

答案 5 :(得分:0)

没有if语句?请尝试以下操作:

i = 0
while yourlist[i] not in yourdict: i+=1
final_key = yourlist[i]

答案 6 :(得分:0)

在python3中非常简单

dict.__contains__('your key here')

和python2

dict.has_key('your key here')

它将为您提供True或False

答案 7 :(得分:0)

没有if语句的单行代码不是更好的代码。

考虑传统的,已记录的干净功能:

def find_first(candidates, collection):
  """Find the first element of candidates also in collection"""
  for k in candidates:
    if k in collection: return k
  return None # or raise a KeyNotFound exception!

或一些(未经测试的)单缸纸,例如:

next(set(candidates).intersection(set(collection))

您想在一年内调试哪个代码?如果速度太慢(单线速度可能慢几倍),您更想优化