Python Forum
List of dictionaries: use key-value instead of index?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
List of dictionaries: use key-value instead of index?
#1
If you have a list of dictionaries, and need any dictionary but do not know what index that dictionary is located at, then how can you instead use the key or key value pair to find that dictionary?

The dictionary needs to retrieve as it is within the list so that the key values can still be used the same ways. Or at least be changed back like that.

I feel like this is super simple to do but I'm new to Python and absolutely cannot figure this out nor find it anywhere. I've been looking for days.

Example:

[{'colorkey':'red', 'status':'on', 'registered':'yes'},{'colorkey':'blue', 'status':'off', 'registered':'no'},{'colorkey':green', 'status':'on', 'registered':'yes'}]
Assume there is no way to know what index each colorkey is located at, but you need to retrieve or get or return each dictionary that has a status on and registered yes. You need to find dictionaries not by using the index but by the colorkey key or key value pair.

How can this be done?


Edit:

Here is what should result from that example:

{'colorkey':'red', 'status':'on', 'registered':'yes'},{'colorkey':'green','status':'on','registered':'yes'}
Reply
#2
Loop through the list of dict's, checking if status is on and is registered is yes and add the ones that are to a new list.
Reply
#3
(Jun-02-2019, 06:23 PM)Yoriz Wrote: Loop through the list of dict's, checking if status is on and is registered is yes and add the ones that are to a new list.

I don't need that dictionary if it is on and registered.

If that dictionary say colorkey:red is both on and registered, then I need the dictionary in a second list of dictionaries, that also contains the key vale colorkey:red.


I am working with two lists of dictionaries. The first has the on and registered key values. The second does not.

If any dictionary in the second list is not on OR not registered, then I do not need it.

If any dictionary in the second list is BOTH on and registered, then I do need it.

So I need to loop through the first list of dictionaries to find all that are both on and registered... and then?
Reply
#4
(Jun-02-2019, 06:18 PM)dn237 Wrote: Assume there is no way to know what index each colorkey is located at, but you need to retrieve or get or return each dictionary that has a status on and registered yes. You need to find dictionaries not by using the index but by the colorkey key or key value pair.
I have soft deleted a response from this as this sounds like an assignment copied and paste here. Can you explain?
Recommended Tutorials:
Reply
#5
colors = [
    {'colorkey': 'red', 'status': 'on', 'registered': 'yes'},
    {'colorkey': 'blue', 'status': 'off', 'registered': 'no'},
    {'colorkey': 'green', 'status': 'on', 'registered': 'yes'},
    ]

color_to_find = 'red'
for element in colors:
    # element is a dict
    color = element.get('colorcode')
    if color == color_to_find:
        # result found
        # stop the iteration if you want to have only one result.
        # otherwise you must walk through the complete list
        # if you break out of the lopp
        # you'll only get the first hit
        break
else:
    pass
    # result not found, for loop finished completely
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#6
(Jun-02-2019, 10:18 PM)metulburr Wrote:
(Jun-02-2019, 06:18 PM)dn237 Wrote: Assume there is no way to know what index each colorkey is located at, but you need to retrieve or get or return each dictionary that has a status on and registered yes. You need to find dictionaries not by using the index but by the colorkey key or key value pair.
I have soft deleted a response from this as this sounds like an assignment copied and paste here. Can you explain?

I don't know what you mean by an assignment copied and pasted here, but if you mean a school assignment that seems to be going way beyond the needed purposes for admins and mods in forums, and to certainly be lowering the quality of the forum just as much as a lack of moderating would as well. I am not a student. If I was, I would have other resources to get help from and so probably wouldn't be here.

What I mean is this:

There is no way to use the index to refer to which dictionary in the list you want. Instead of using the index in the list, the colorkey key value pair has to be used.
Reply
#7
The way things are worded makes it look like homework, lots come here and try to get there homework done for them which does them no good as they don't learn anything.

If its not homework, you have not yet shown the code you need help with.
Are you after someone to do the code for you, if so this can be moved to the jobs section of the forum, otherwise please post a minimal code sample (in python code tags)
for the specific part your stuck on, explain what you expect to happen and what is actually happening and any errors received in error tags.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Sort a list of dictionaries by the only dictionary key Calab 1 452 Oct-27-2023, 03:03 PM
Last Post: buran
  Access list of dictionaries britesc 4 1,027 Jul-26-2023, 05:00 AM
Last Post: Pedroski55
Thumbs Down I hate "List index out of range" Melen 20 3,154 May-14-2023, 06:43 AM
Last Post: deanhystad
  IndexError: list index out of range dolac 4 1,843 Jul-25-2022, 03:42 PM
Last Post: deanhystad
  IndexError: list index out of range Anldra12 2 1,408 May-03-2022, 01:39 PM
Last Post: Anldra12
  IndexError: list index out of range rf_kartal 6 2,759 Sep-07-2021, 02:36 PM
Last Post: Larz60+
  Python Error List Index Out of Range abhi1vaishnav 3 2,233 Sep-03-2021, 08:40 PM
Last Post: abhi1vaishnav
  IndexError: list index out of range Laplace12 1 2,186 Jun-22-2021, 10:47 AM
Last Post: Yoriz
  function that returns a list of dictionaries nostradamus64 2 1,698 May-06-2021, 09:58 PM
Last Post: nostradamus64
  IndexError: list index out of range brunolelli 11 6,340 Mar-25-2021, 11:36 PM
Last Post: brunolelli

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020