Home > Software design >  Update the first value of a dictionary
Update the first value of a dictionary

Time:11-18

I have a list of multiple dictionaries.

The structure of my dictionaries are like that :

{'word': 'hello world', 'definition': 'saying hello to the world'}

I would like to update only the first value, so here 'hello world' in order to have it in upper case. Here is my comprehension list i'm trying with:

upper = {key: value.upper()[0] for key, value in words_dict.items()}

The problem is that with this I have this result: {'word': 'H', 'definition': 'S'}

I've tried loads of things but I'm still blocked...

CodePudding user response:

A list comprehension is not very useful if all you want is to change the first item of the dict. You can change the dict in-place.

One way of doing it, without specifying the key name:

words_dict[next(iter(words_dict))] = words_dict[next(iter(words_dict))].upper()

CodePudding user response:

You could do something like

upper = {key: words_dict[key].upper() if idx==0 else words_dict[key] for idx, key in enumerate(words_dict.keys())}

But using a dictionary comprehension here is hardly very readable. Perhaps a more readable approach would be to copy the dictionary and then just modify the first element.

upper = words_dict.copy()
first = list(upper.keys())[0]
upper[first] = upper[first].upper()

If you want to update the original dictionary, obviously operate on the original instead of on a copy.

CodePudding user response:

you can do using dict comprehension

{key:val.upper() for key,val in [x for x in a.items()][:1]}
  • Related