【问题标题】:Defaultdict - assign strings to key value in loopDefaultdict - 在循环中将字符串分配给键值
【发布时间】:2018-04-22 17:09:24
【问题描述】:

我很难理解为什么我试图循环并分配给默认字典中的字典键值对的字符串值无法正常工作。

这里期望的结果是遍历两个列表中的每一个中的字符串值,并返回一个字典,其中包含用于键的网站和用于值的团队名称。但是,追加和等号都不起作用。此外,我不确定为什么 defaultdict 以 defaultdict(None, {}) 形式返回(或 defaultdict(list, {}) 如果我将其作为列表启动)。有没有办法断言这个字典的键和值都是字符串?

感谢您的帮助。

teams=['yankees','redsox','giants']
websites=['xasfsgrwg.cc','redsox.com','giants.org']

from collections import defaultdict 
baseballdict=defaultdict() #defaultdict(None, {})
#baseballdict=defaultdict(list)

for i in range(len(websites)):
    baseballdict[websites[i]]=baseballdict[teams[i]] #does not work 
    baseballdict[websites[i]].append(baseballdict[teams[i]]) # does not work

【问题讨论】:

  • 你能用你想要的输出来edit你的问题吗?这将使您的问题更加清晰。
  • dict(zip(webites, teams))
  • 如果您正确解释了您想要的结果,那么 (1) Stephen 的评论是最好的方法 (2) defaultdict 不会添加任何内容。

标签: python dictionary defaultdict


【解决方案1】:

您在代码的最后几行中分配和附加错误。

这是对您的代码的修复。

teams=['yankees','redsox','giants']
websites=['xasfsgrwg.cc','redsox.com','giants.org']

baseballdict={}

for i in range(len(websites)):
    baseballdict[websites[i]]=teams[i] 

print(baseballdict)# prints dictionary

【讨论】:

    【解决方案2】:

    要创建一个将类型字符串作为键类型的默认字典,您应该像my_dict = defaultdict(str) 一样创建。对于有一个将网站作为键和团队作为值的字典,您应该这样做:

    for i in range(len(websites)):
        baseballdict[websites[i]] = teams[i]
    

    【讨论】:

    • 代码是对的,但第一句不对。 defaultdict 的参数创建的是值,而不是键。
    猜你喜欢
    • 2021-09-03
    • 2016-08-31
    • 2020-10-08
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多