如何创建键或将元素附加到键?

新手上路,请多包涵

我有一本空字典。名称: dict_x 键值是列表。

从单独的迭代中,我获得了一个键(例如: key_123 )和一个项目(一个元组)放置在列表中 dict_x 的值 key_123

如果这个键已经存在,我想追加这个项目。如果这个键不存在,我想用一个空列表创建它,然后附加到它或者只是用一个元组创建它。

将来再次出现此键时,由于它存在,我希望再次附加该值。

我的代码包括:

获取密钥和值。

查看 dict_x 中是否存在 NOT 密钥。

如果不创建它: dict_x[key] == []

之后: dict_x[key].append(value)

这是这样做的方法吗?我可以尝试使用 try/except 块吗?

原文由 Phil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 223
2 个回答

使用 dict.setdefault()

 dict.setdefault(key,[]).append(value)

帮助(dict.setdefault)

     setdefault(...)
        D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

原文由 Ashwini Chaudhary 发布,翻译遵循 CC BY-SA 4.0 许可协议

以下是执行此操作的各种方法,因此您可以比较它的外观并选择您喜欢的方法。我以我认为最 “pythonic” 的方式订购了它们,并评论了乍一看可能并不明显的优缺点:

使用 collections.defaultdict

 import collections
dict_x = collections.defaultdict(list)

...

dict_x[key].append(value)

优点:可能是最好的性能。缺点:在 Python 2.4.x 中不可用。

使用 dict().setdefault()

 dict_x = {}

...

dict_x.setdefault(key, []).append(value)

缺点:未使用的创建效率低下 list() s。

使用 try ... except

 dict_x = {}

...

try:
    values = dict_x[key]
except KeyError:
    values = dict_x[key] = []
values.append(value)

要么:

 try:
    dict_x[key].append(value)
except KeyError:
    dict_x[key] = [value]

原文由 antak 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题