Home > Blockchain >  update values of list in dictionary
update values of list in dictionary

Time:08-22

I have a dictionary d = {'1':[2,3,5,6], '4':[1,6,8]}, I want to update the values in the list which are not present in range(1,11), while the key remains same.

The new dictionary should be like:

d1 = {'1':[1, 4, 7, 8, 9, 10], '4':[2, 3, 4, 5, 7, 9, 10]

Please suggest how it can be done.

I have already tried:

d = {'1':[2,3,5,6], '4':[1,6,8]}
x = range(1,17)
dic ={}
l=[]
for k,v in d.items():
    for x in range(1,17):
        if x not in v:
        l.append(x)
    dic[k] = l

Which gives me result as:

{'1': [1, 4, 7, 8, 9, 10, 2, 3, 4, 5, 7, 9, 10], '4': [1, 4, 7, 8, 9, 10, 2, 3, 4, 5, 7, 9, 10]}

CodePudding user response:

You can do this with a dict comprehension:

>>> d = {'1':[2,3,5,6], '4':[1,6,8]}
>>> x = range(1, 11)
>>> {k: [i for i in x if i not in v] for k, v in d.items()}
{'1': [1, 4, 7, 8, 9, 10], '4': [2, 3, 4, 5, 7, 9, 10]}

CodePudding user response:

You only have an issue with the initialization of l, it should be inside the first loop,

d = {'1':[2,3,5,6], '4':[1,6,8]}
dic ={}

for k,v in d.items():
    l = []
    for x in range(1,11):
        if x not in v:
            l.append(x)
    dic[k] = l
print(dic)

OR a single-line dictionary comprehension,

dic = { k: [x for x in range(1,11) if x not in v] for k, v in d.items()}

Output:

{'1': [1, 4, 7, 8, 9, 10], '4': [2, 3, 4, 5, 7, 9, 10]}
  • Related