2024-05-14 20:42:45 发布
网友
我有一本简单的字典,上面有关键字,值:
d = {'word': 1, 'word1': 2}
我需要添加另一个值(以根据值列出列表):
d = {'word': [1, 'something'], 'word1': [2, 'something1']}
我应付不了。有线索吗?
您可以编写一个函数来为您执行此操作:
>>> 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的情况下:
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]}
您可以编写一个函数来为您执行此操作:
或者,正如@Dan所指出的,您可以使用一个列表来最初保存数据。Pythonic的一种方法是,如果这样做,您可以定义一个自定义的defaultdict,它将数据直接添加到列表中:
你可以简单地使用:
或者在需要提取
1
的情况下:最后说要用新值更新键序列,如:
您可以使用:
如果总是使用列表,即使只有一个值,也会很容易。它只是一个长度为1的列表。
相关问题 更多 >
编程相关推荐