Reputation: 354
I have a dictionary created from variables in a netCDF file. I have also sorted all of these variables in the order of time. There are repeated values for some of the keys. I want to find all of the indices for a specific value in one key and retrieve the corresponding indices from another key:
For example:
test_dict = {}
test_dict['time'] = [1,2,3,4]
test_dict['number'] = [12,14,12,13]
test_dict['number2'] = [20,21,22,23]
in test_dict I want to find the indices of all occurrences of 12 in the key 'number' and get the corresponding values in 'number2'. So the result should be:
idx = [0,2]
nums_interest = [test_dict['number2'][i] for i in idx]
>>>> [20,22]
I have tried to find the number of unique values in 'number' using:
num_unique = np.unique(test_dict['number'])
>>>> [12,13,14]
Then I want to find all indices of these unique occurrences.
idx2 = [test_dict['number'].index(num_unique[0])
>>> 0
I have two main problems: 1. I can find the first index, but not repeating indices. 2. I want to loop through the list of unique numbers and get indices for every unique value not just num_unique[0] question: what is the best way to find indices for a certain value in a dictionary and extract the values for the same indices in a different key?
Upvotes: 0
Views: 1629
Reputation: 638
To return values from one key based on index of another key in a dict
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])
returns [20,22]
To get indices of all occurences of a value in a list
indices = [i for i,j in enumerate(dict['number']) if j==12]
gives indices
equals [0,2]
Upvotes: 1