如何将值附加到尚未存在的键?

2024-10-03 15:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本这样的字典:

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

我需要从列表中删除重复的值。我编写了一个函数:

^{pr2}$

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

KeyError: 'two:'

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


Tags: nodebug列表字典valueonedctthree
3条回答

如果要删除重复项,只需使用set()函数将列表更改为set:

https://docs.python.org/2/tutorial/datastructures.html#sets

它会自动为您提供唯一的集合,然后您可以随时将其更改回列表。在

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

set(dct)返回一个set,它是一个没有重复项的列表:

^{pr2}$

如果你需要一本新字典,你可以:

new_dct = {}
for key, value in dct.items():
    if not isinstance(value, basestring):
        new_dct[key] = set(value)
    else:
        new_dct[key] = value

我认为同时添加键和追加的最好方法是使用dicts的^{}方法:

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

但是,你可以用这样一种更简洁的方式来做:

^{pr2}$

对于通过if测试的键值组合,该黑客将把列表转换成一个集合(删除重复项),然后再转换成一个列表。对于其他键值组合,它将保持原样。在

相关问题 更多 >