查找列表的哪个元素是字典中的键及其值

问题描述 投票:0回答:3

我有字典:

classes_dictionary = {'/m/09x0r': 'Speech', '/m/03qc9zr': 'Screaming'}

和列表:

labels_list= ['/m/03k3r,/m/04rlf,/m/07q5rw0,/m/09x0r,/m/0jbk']

labels_list将始终包含至少一个元素,该元素是classes_dictionary的键。我希望提取哪些类是计算复杂度最低的类。在此示例中,'/m/09x0r'将转换为'Speech'。我的解决方案:

        class_str = list()
        for k in labels_list:
            print(k)
            if k in self.classes_dictionary:
                class_str.append(self.classes_dictionary[k])

我不介意输出是列表还是其他任何类型。同样,对于问题的一般性,我假设labels_list的单个元素是关键,尽管最佳答案可能会同时考虑这两种情况。

有没有更有效的方法来实现这一目标?我都问,执行效率

python list dictionary processing-efficiency
3个回答
0
投票

要有效地检查字典上的键。

#YOUR CODE
if k in self.classes_dictionary:
    #do_job

#More efficient
try:
    self.classes_dictionary[k]
    #do_job
except:
    #Key not in dict
    pass

0
投票

当前,您的labels_list由一个字符串组成。似乎应该是5个字符串的列表。您不需要自我。在classes_dictionary前面:

class_str = list()
for k in labels_list:
  print(k)
  if k in classes_dictionary:
    class_str.append(classes_dictionary[k])

0
投票

如果改为labels_list,则可能会发现一些性能。使用设置键和字典键的交集:

classes_dictionary = {'/m/09x0r': 'Speech', '/m/03qc9zr': 'Screaming'}
labels_list= set(['/m/03k3r', '/m/04rlf', '/m/07q5rw0', '/m/09x0r', '/m/0jbk'])

[classes_dictionary[k] for k in labels_list & classes_dictionary.keys()]
© www.soinside.com 2019 - 2024. All rights reserved.