I have this list of dictionaries, for example:
list = [{a: "-1", month: 'January'}, {a: "0", month: 'February'}, {a: "1", month: 'March'},
{a: "2", month: 'April'}]
So how would it be if I wanted to get the values of the list from an element that I choose. If I choose a:0, it should return all elements of this forward. It would be like this:
[{a: "1", month: 'March'}, {a: "2", month: 'April'}]
if I choose:-1: it should return this:
[{a: "0", month: 'February'}, {a: "1", month: 'March'},{a: "2", month: 'April'}]
Also, how would it be if it is proposed that the same selection be included in the list?
Advertisement
Answer
Here’s a function to walk the list and return all the items after the dictionary containing a certain key/value:
list_ = [{'a': '-1', 'month': 'January'},
{'a': '0', 'month': 'February'},
{'a': '1', 'month': 'March'},
{'a': '2', 'month': 'April'}]
def forward(items,key,value):
# Note: enumerate returns the index and value of each list item
for i,d in enumerate(items):
if d[key] == value: # once the dictionary containing the key/value is found
return list_[i+1:] # return a slice of all items after that index
return []
print(forward(list_,'a','-1'))
print(forward(list_,'a','0'))
print(forward(list_,'a','1'))
Output:
[{'a': '0', 'month': 'February'}, {'a': '1', 'month': 'March'}, {'a': '2', 'month': 'April'}]
[{'a': '1', 'month': 'March'}, {'a': '2', 'month': 'April'}]
[{'a': '2', 'month': 'April'}]