加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python for循环附加到字典中的每个键

发布时间:2020-12-20 11:53:23 所属栏目:Python 来源:网络整理
导读:我正在迭代一个元组列表和一个字符串列表.字符串是列表中项目的标识符.我有一个字典,其字符串标识符为键,并且每个值都有一个最初为空的列表.我想从元组列表中向每个键添加一些内容.我正在做的简化版本是: tupleList = [("A","a"),("B","b")]stringList = ["
我正在迭代一个元组列表和一个字符串列表.字符串是列表中项目的标识符.我有一个字典,其字符串标识符为键,并且每个值都有一个最初为空的列表.我想从元组列表中向每个键添加一些内容.我正在做的简化版本是:

tupleList = [("A","a"),("B","b")]
stringList = ["Alpha","Beta"]
dictionary = dict.fromkeys(stringList,[])  # dictionary = {'Alpha': [],'Beta': []}
for (uppercase,lowercase),string in zip(tupleList,stringList):
    dictionary[string].append(lowercase)

我希望这能给出dictionary = {‘Alpha’:[‘a’],’Beta’:[‘b’]},但我发现{‘Alpha’:[‘a’,’b’],‘Beta’:[‘a’,’b’]}.有谁知道我做错了什么?

解决方法

您的问题是您通过引用共享两个键之间的列表.

会发生什么是dict.fromkeys没有为每个键创建一个新列表,但是为所有键提供了相同列表的引用.你的其余代码看起来正确:)

而不是这样做你应该使用defaultdict,基本上它是一个dict,如果它们不存在就会创建新值,如果它们存在则检索它们(并且在插入项目时不需要if / else来检查是否它已经存在).它在这种情况下非常有用:

from collections import defaultdict

tupleList = [("A","Beta"]
dictionary = defaultdict(list) # Changed line
for (uppercase,stringList):
    dictionary[string].append(lowercase)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读