I need to be able to find an item in a list
(an item in this case being a dict
) based on some value inside that dict
. The structure of the list
I need to process looks like this:
[ { 'title': 'some value', 'value': 123.4, 'id': 'an id' }, { 'title': 'another title', 'value': 567.8, 'id': 'another id' }, { 'title': 'last title', 'value': 901.2, 'id': 'yet another id' } ]
Caveats: title
and value
can be any value (and the same), id
would be unique.
I need to be able to get a dict
from this list
based on a unique id
. I know this can be done through the use of loops, but this seems cumbersome, and I have a feeling that there's an obvious method of doing this that I'm not seeing thanks to brain melt.
keys() is a method which allows to access keys of a dictionary. .get(key) is method by how we can access every key one by one. Then by using nested loop we can access every key and its values one by one remained in a list. Welcome to Stack Overflow. Code dumps without any explanation are rarely helpful.
To convert Python Dictionary keys to List, you can use dict. keys() method which returns a dict_keys object. This object can be iterated, and if you pass it to list() constructor, it returns a list object with dictionary keys as elements.
A dictionary can contain another dictionary. A dictionary can also contain a list, and vice versa.
my_item = next((item for item in my_list if item['id'] == my_unique_id), None)
This iterates through the list until it finds the first item matching my_unique_id
, then stops. It doesn't store any intermediate lists in memory (by using a generator expression) or require an explicit loop. It sets my_item
to None
of no object is found. It's approximately the same as
for item in my_list: if item['id'] == my_unique_id: my_item = item break else: my_item = None
else
clauses on for
loops are used when the loop is not ended by a break
statement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With