我有字典:
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
的单个元素是关键,尽管最佳答案可能会同时考虑这两种情况。
有没有更有效的方法来实现这一目标?我都问,执行效率
要有效地检查字典上的键。
#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
当前,您的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])
如果改为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()]