如果不存在,如何创建列表,如果不存在,如何添加到列表

时间:2019-12-09 23:02:36

标签: python python-3.x

说我有一本像这样的字典:

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]}

2 个答案:

答案 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]