不添加不在字典值中的所有元素



我正在遍历列表,并假定将字典中没有出现的元素作为值添加到字典中,因此我期望输出:

{'key': 1, 'key2': 3, 'key3': 2, 'key4':4, 'key5':5}

代码:

di = {'key':1, 'key2':4}
li=[1,1,1,2,4,3,5]
b = sum(1 for key in di if key.startswith('key')) # check how many keys starts with 'key'
for i in li:                #if element of list is not in dictionary key values 
if i not in di.values():  #add it as value to 'key+b+1'
di[f'key{b+1}']= i

但是我得到的输出是:

{'key': 1, 'key2': 4, 'key3': 5}

所以正如我看到的,尽管我告诉Python检查dict中的元素。他正在检查的值也是键或项。

您的问题是,在向di添加新键后,您不会增加计数b。用下面的句子来解决你的问题:

for i in li:                #if element of list is not in dictionary key values 
if i not in di.values():  #add it as value to 'key+b+1'
di[f'key{b+1}']= i
b += 1  

生产:

{'key': 1, 'key2': 4, 'key3': 2, 'key4': 3, 'key5': 5}

正如@ itproh66所提到的。您需要在添加键时增加b

这里有一个替代方法:

# Original dict
di = {'key': 1, 'key2': 4}
# list of values to add
li = [1, 1, 1, 2, 4, 3, 5]
# start key number
b = sum(1 for key in di if key.startswith('key')) + 1
# list of values to add
values = [i for i in set(li) if i not in di.values()]
# list of keys to add
keys = [f'key{i}' for i in range(b, b + len(values))]
# add them to the dict
di.update(zip(keys, values))

相关内容

  • 没有找到相关文章

最新更新