更新python字典(向现有键添加另一个值)

2024-05-14 20:42:45 发布

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

我有一本简单的字典,上面有关键字,值:

d = {'word': 1, 'word1': 2}

我需要添加另一个值(以根据值列出列表):

d = {'word': [1, 'something'], 'word1': [2, 'something1']}

我应付不了。有线索吗?


Tags: 列表字典关键字somethingword线索word1something1
3条回答

您可以编写一个函数来为您执行此操作:

>>> d = {'word': 1, 'word1': 2}
>>> def set_key(dictionary, key, value):
...     if key not in dictionary:
...         dictionary[key] = value
...     elif type(dictionary[key]) == list:
...         dictionary[key].append(value)
...     else:
...         dictionary[key] = [dictionary[key], value]
... 
>>> set_key(d, 'word', 2)
>>> set_key(d, 'word', 3)
>>> d
{'word1': 2, 'word': [1, 2, 3]}

或者,正如@Dan所指出的,您可以使用一个列表来最初保存数据。Pythonic的一种方法是,如果这样做,您可以定义一个自定义的defaultdict,它将数据直接添加到列表中:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d[1].append(2)
>>> d[2].append(2)
>>> d[2].append(3)
>>> d
defaultdict(<type 'list'>, {1: [2], 2: [2, 3]})

你可以简单地使用:

d['word'] = [1,'something']

或者在需要提取1的情况下:

d['word'] = [d['word'],'something']

最后说要用新值更新键序列,如:

to_add = {'word': 'something', 'word1': 'something1'}

您可以使用:

for key,val in to_add.items():
    if key in d:
        d[key] = [d[key],val]

如果总是使用列表,即使只有一个值,也会很容易。它只是一个长度为1的列表。

>>> d = {'a': [1], 'b': [2]}
>>> d
{'a': [1], 'b': [2]}
>>>
>>> d['a'].append(5)
>>> d
{'a': [1, 5], 'b': [2]}

相关问题 更多 >

    热门问题