在字典python中查找值的所有索引

时间:2016-06-10 16:52:56

标签: python dictionary

我有一个从netCDF文件中的变量创建的字典。我还按时间顺序对所有这些变量进行了排序。某些键有重复值。我想在一个键中找到特定值的所有索引,并从另一个键中检索相应的索引:

例如:

test_dict = {}
test_dict['time'] = [1,2,3,4]
test_dict['number'] = [12,14,12,13]
test_dict['number2'] = [20,21,22,23]

在test_dict中我想在键'number'中找到所有出现的12的索引,并在'number2'中得到相应的值。所以结果应该是:

idx = [0,2]
nums_interest = [test_dict['number2'][i] for i in idx]
>>>> [20,22]

我试图使用以下方法找到'number'中唯一值的数量:

num_unique = np.unique(test_dict['number'])
>>>> [12,13,14]

然后我想找到这些独特事件的所有索引。

 idx2 = [test_dict['number'].index(num_unique[0])
 >>> 0

我有两个主要问题:1。我可以找到第一个索引,但不能重复索引。 2.我想循环遍历唯一数字列表并获取每个唯一值的索引而不仅仅是num_unique [0] 问题:在字典中查找特定值的索引并在不同的密钥中提取相同索引的值的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

根据字典中另一个键的索引从一个键返回值

test_dict = {}
test_dict['number'] = [12,14,12,13]
test_dict['number2'] = [20,21,22,23]
print([j for i,j in zip(test_dict['number'],test_dict['number2']) if i==12])

返回[20,22]

获取列表中值的所有出现的索引

indices = [i for i,j in enumerate(dict['number']) if j==12]

indices等于[0,2]