'How to get the values of dictionary python?

I have the below python dictionary stored as dictPython

{
    "paging": {"count": 10, "start": 0, "links": []},
    "elements": [
        {
            "organizationalTarget~": {
                "vanityName": "vv",
                "localizedName": "ViV",
                "name": {
                    "localized": {"en_US": "ViV"},
                    "preferredLocale": {"country": "US", "language": "en"},
                },
                "primaryOrganizationType": "NONE",
                "locations": [],
                "id": 109,
            },
            "role": "ADMINISTRATOR",

        },
    ],
}

I need to get the values of vanityName, localizedName and also the values from name->localized and name->preferredLocale.

I tried dictPython.keys() and it returned dict_keys(['paging', 'elements']).

Also I tried dictPython.values() and it returned me what is inside of the parenthesis({}).

I need to get [vv, ViV, ViV, US, en]



Solution 1:[1]

What about:

dic = {
    "paging": {"count": 10, "start": 0, "links": []},
    "elements": [
        {
            "organizationalTarget~": {
                "vanityName": "vv",
                "localizedName": "ViV",
                "name": {
                    "localized": {"en_US": "ViV"},
                    "preferredLocale": {"country": "US", "language": "en"},
                },
                "primaryOrganizationType": "NONE",
                "locations": [],
                "id": 109,
            },
            "role": "ADMINISTRATOR",
        },
    ],
}
base = dic["elements"][0]["organizationalTarget~"]
c = base["name"]["localized"]
d = base["name"]["preferredLocale"]
output = [base["vanityName"], base["localizedName"]]
output.extend([c[key] for key in c])
output.extend([d[key] for key in d])

print(output)

outputs:

['vv', 'ViV', 'ViV', 'US', 'en']

Solution 2:[2]

I am writing this in a form of answer, so I can get to explain it better without the comments characters limit

  • a dict in python is an efficient key/value structure or data type for example dict_ = {'key1': 'val1', 'key2': 'val2'} to fetch key1 we can do it in 2 different ways
    1. dict_.get(key1) this returns the value of the key in this case val1, this method has its advantage, that if the key1 is wrong or not found it returns None so no exceptions are raised. You can do dict_.get(key1, 'returning this string if the key is not found')
    2. dict_['key1'] doing the same .get(...) but will raise a KeyError if the key is not found

So to answer your question after this introduction, a dict can be thought of as nested dictionaries and/or objects inside of one another to get your values you can do the following

# Fetch base dictionary to make code more readable
base_dict = dict_["elements"][0]["organizationalTarget~"]
# fetch name_dict following the same approach as above code
name_dict = base_dict["name"]
localized_dict = name_dict["localized"]
preferred_locale_dict = name_dict ["preferredLocale"]

so now we fetch all of the wanted data in their corresponding locations from your given dictionary, now to print the results, we can do the following

results_arr = []
for key1, key2 in zip(localized_dict, preferredLocale_dict):
    results_arr.append(localized_dict.get(key1))
    results_arr.append(preferred_locale_dict.get(key2))

print(results_arr)

Solution 3:[3]

So something like this?

[[x['organizationalTarget~']['vanityName'],
  x['organizationalTarget~']['localizedName'],
  x['organizationalTarget~']['name']['localized']['en_US'],
  x['organizationalTarget~']['name']['preferredLocale']['country'],
  x['organizationalTarget~']['name']['preferredLocale']['language'],
 ] for x in s['elements']]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 ElSheikh
Solution 3 sagi