说我有一本像这样的字典:
mappings = {"some_key": 3}
或者看起来像这样:
mappings = {"some_key": [4,5,6]}
说我在该函数中有一个值100和一个“ some_key”键:
def add_to_mappings(key, value):
if key in mappings:
mappings[key] = ?
,我想添加到列表(如果存在),或者创建一个(不存在)。最后,我希望我的映射看起来像这样:
mappings = {"some_key": [3, 100]}
或
mappings = {"some_key": [4,5,6,100]}
答案 0 :(得分:5)
没有./win32/Makefile.sub(1162) : warning U4006: special macro undefined : '$@"'
target enclose_io_memfs.obj
target enclose_io_memfs.obj
cl -nologo -c enclose_io_memfs.c
enclose_io_memfs.c
cl used
compiling repu1sion_02 enclose_io_memfs.c
:
defaultdict
使用mappings = dict()
def add_to_mappings(key, value):
try:
mappings[key].append(100)
except KeyError:
mappings[key] = [100]
:
defaultdict
编辑:我误解了原来的要求,如果要获取一个项目(如果已经存在)并从中创建一个列表以及新项目,那么第一个示例可以更改为: >
from collections import defaultdict
mappings = defaultdict(list)
def add_to_mappings(key, value):
mappings[key].append(value)
答案 1 :(得分:3)
您检查是否有isinstance(x, list)
的列表。您可以从字典中提取现有值,然后用简单的赋值替换该值。所以:
def add_to_mappings(d, key, value): # Remember to pass in the dict too!
if key in d:
# The value is present
v = d[k]
if isinstance(v, list):
# Already a list: just append to it
v.append(value)
else:
# Not a list: make a new list
d[k] = [v, value]
else:
# Not present at all: make a new list
d[key] = [value]