如何在函数调用中将值附加到 python 字典和 return 它

How to append values to a python dictionary and return it in a function call

我在执行多次的 python 函数调用中有一个 for 循环。我需要 return 字典中的值以将它们转储到数据库中。

这是一段示例代码,我如何将值附加到字典并确保我拥有所有这些值以供进一步使用。

def parser_code():
    log = dict()
    for i in range(len):
        log['abc'] = 2*i
        log['xyz'] = 10+i
    return log

这将至少执行两次所以我希望字典是 log = {['abc':2, 'xyz':11],['abc':3, 'xyz':12]}

如何每次都附加到结果?还是有更聪明的方法来做到这一点?

您可以将字典作为函数的参数。

请注意您的代码对我不起作用(for 循环的原始缩进 - 现在已更正)和 len 参数)。我需要猜测一下你实际上在做什么。您能否在此处查看问题或评论中的示例代码?

def parser_code(result, length):
   for i in range(length):
       result['abc'] = 2*i
       result['xyz'] = 10+i
   return result

d = {}
parser_code(d, 3)
print(d)
parser_code(d, 3)
print(d)

将给出此输出:

python3 ./main.py 
{'abc': 4, 'xyz': 12}
{'abc': 4, 'xyz': 12}

我认为您正在寻找标准库的 defaultdict 部分。

from collections import defaultdict
glog = defaultdict(list)
def parser_code(dd):
    for i in range(length):
        dd['abc'].append(2*i)
    return dd

glog = parser_code(glog)

如果你真的想使用你的结果,你必须确保没有为每次调用你的函数创建新的字典。

仍然有点不清楚你是否需要字典,只有当你想要键查找的能力时才需要它。如果您对制作数字列表(数组)感到满意,那么继续使用列表。

glog = list()
def parser_code(lst):
    return lst + [2*i for i in range(length)]
glog = parser_code(glog)

我不是 100% 确定您期望的行为,但我认为这段代码应该足够了:

def parser_code(length):
  log = list()
  for i in range(length):
    this_dict = dict()
    this_dict['abc'] = 2*i
    this_dict['xyz'] = 10+i
    log.append(this_dict)
  return log