如何在不覆盖的情况下将新值附加到现有dict密钥

2024-09-27 09:37:45 发布

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

标题描述了这个问题,这是我尝试过的,这并没有给我期望的资源。。问题在哪里?

for name in file:              
  if name in list:
    if dict.has_key(param):
      dict[param] = [dict[param],name]
    else:
      dict[param] = name

预期输出:

dict = {
'param1': ['name11', 'name12', 'name13'],
'param2': ['name21', 'name22', 'name23'],
.
.
.
}

Tags: keynamein标题forifparam资源
2条回答

您需要将这些名称附加到列表中。下面是一个天真的例子,可能会失败。

for name in file:              
    if name in list:
        if dict.has_key(param):
            dict[param].append(name)
        else:
            dict[param] = [name]

或者如果你想更干净一点,你可以使用^{}。如果你问我,这就是Python的方式。

d = collections.defaultdict(list)
for name in file:
    if name in lst: # previously overwrote list()
        d[param].append(name)

请不要用自己的变量覆盖内置函数dict()list()

您正在查找多个映射,即没有键-值关系但键-多个值的映射或字典,请参见:

Is there a 'multimap' implementation in Python?

相关问题 更多 >

    热门问题