在字典列表中搜索特定字典的位置

时间:2015-08-25 14:12:14

标签: python

dict1 = {"1":"a" "2":"b" "3":"c"}
for dict2 in all_dict:
     if compare_dicts(dict1, dict2):
         ...
         ...

我需要all_dict内的dict索引,它与dict1完全相同。

for循环是否顺序超过all_dict所以我可以计算for循环中的迭代次数?

2 个答案:

答案 0 :(得分:4)

您可以使用enumerate()编写一个函数,在列表中生成匹配对象的所有索引:

def findall(lst, value):
    for i, x in enumerate(lst):
        if x == value:
            yield i

您可以将此应用于您的用例:

matching_indices = list(findall(all_dicts, dict1))

如果您只是在寻找一个匹配项,那么list.index()方法就是您所需要的:

matching_index = all_dicts.index(dict1)

答案 1 :(得分:2)

使用filter

filter(lambda x: x == dict1, all_dict)

这将返回您正在寻找的所有词典的列表。例如:

>>> all_dict = [{'a':1}, {'b':2}, {'a':1}]
>>> dict1 = {'a':1}
>>> filter(lambda x: x == dict1, all_dict)
[{'a': 1}, {'a': 1}]