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循环中的迭代次数?
答案 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}]