【发布时间】:2014-08-05 21:40:55
【问题描述】:
我有一个字典列表,它们在列表中都具有相同的结构。例如:
test_data = [{'id':1, 'value':'one'}, {'id':2, 'value':'two'}, {'id':3, 'value':'three'}]
我需要做的是比较这些字典中的每一个并根据值键对返回“相似”字典。例如,给定键 value 和值 oen,我想找到与 oen 几乎相似的所有匹配字典,在本例中为 [{'id':1, 'value':'one'}]。
difflib 有一个函数 get_close_matches 接近我需要的。我可以使用a list comprehension 提取特定键的值,然后将这些值与我的搜索进行比较:
values = [ item['value'] for item in test_data ]
found_vals = get_close_matches('oen', values) #returns ['one']
我需要做的是更进一步,将所有内容与原始字典联系起来:
In [1]: get_close_dicts('oen', test_data, 'value')
Out [1]: [{'id':1, 'value':'one'}]
注意:词典列表非常大,因此我希望尽可能高效/快速。
【问题讨论】:
-
字典列表是不变的,还是会经常变化?
-
常数。但与该列表进行多次比较。
-
好的,很高兴知道。在这种情况下,预处理可能是要走的路。我正在寻找答案。
标签: python dictionary compare