gpt4 book ai didi

python - 如何将值 append 到尚不存在的键?

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:54 24 4
gpt4 key购买 nike

我有这样一本字典:

dct = {'one': 'value', 
'two': ['value1','value2','value1'],
'three':['otherValue1','otherValue2','otherValue1'],
'dontCareAboutThisKey':'debug'}

我需要从列表中删除重复的值。我写了一个函数来做到这一点:

no_dups = {}
for keys in dct:
if isinstance(dct[keys], list) and keys != 'dontCareAboutThisKey':
for value in dct[keys]:
if value not in no_dups.values():
no_dups[keys].append(value)
else:
no_dups[keys] = dct[keys]

我正在检查当前键的值是否是一个列表。如果不是,它只是将键“复制”到 no_dups 字典。如果它是一个列表而不是我不关心的键(肯定没有重复) - 它应该检查当前值是否已经存在于 no_dups.values() 并将其 append 到当前 key 。问题是我遇到了一个错误:

KeyError: 'two:'

我知道这是因为我正在尝试向不存在的键添加一个值,但我不知道如何处理它并使其工作。

最佳答案

我认为同时处理添加键和追加的最佳方法是使用字典的 setdefault()方法:

no_dups.setdefault(keys,[]).append(value)

但除此之外,您还可以像这样以更简洁的方式执行此操作:

#remove duplicates
no_dups = {k:list(set(v)) if isinstance(v, list) and k != 'dontCareAboutThisKey' else v
for k,v in dct.items()} # or dct.iteritems() if using python2.x

对于通过 if 测试的键值组合,该 hack 会将列表转换为一个集合(删除重复项),然后再次放入列表中。对于其他键值组合,它将保持原样。

关于python - 如何将值 append 到尚不存在的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24586974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com