我希望尽可能高效地遍历键值对列表。其目的是遍历数据集以找到包含与我要查找的代码对应的键的键值对,这是嵌套在另一个for循环中的,该循环遍历一组代码。 我的logos对象看起来像:
data_set = [{'key1': 'value'}, {'key2': 'value2'}, {'key3': 'value3'}, ]
codes = ['key1', 'key2', 'key3']
其中键对应于代码,值是我要提取的数据
for code in codes:
data = ''
for idx, data_obj in enumerate(data_set):
for (key, value) in data_obj.items():
if key == code:
data = value
break
if data != '':
del data_set[idx]
break
do_something_with_data(data)
目前我的方法运行良好,速度也相当快,但我不禁想知道是否有一种更干净/更快的方法
如果你有一个dict和你所有的键,这将是微不足道的,可以用dict.pop(key[,default])。你知道吗
在一个列表中的多个单键dict中有不相交的键是一个非常糟糕的数据结构选择-您应该将它们固定到一个大字典中,以使O(1)能够访问这些键,而不是随后将列表操纵成形状。你知道吗
具有多个键的dict的解决方案,如果这些键在您的代码列表中,它们将从dict中消失:
输出:
从第三方获取数据时:
输出:
此解决方案使用列表理解作为总体
O(n^2)
解决方案:输出:
这会让事情加快一点
values
应该是您要查找的值的列表。它肯定比您的版本快,因为它使用O(1)集查找相关问题 更多 >
编程相关推荐