【问题标题】:Append string value to an existing key in dict [duplicate]将字符串值附加到dict中的现有键[重复]
【发布时间】:2021-02-08 03:17:20
【问题描述】:

我正在尝试将值附加到字典中已存在的键。

我遇到了这个 SO 链接 How do I append a value to dict key? (AttributeError: 'str' object has no attribute 'append'),但是在这种特殊情况下,值是整数,而在我的情况下,值是字符串。

我想要的是:

mydict = {'ADE':'AD', 'RS':'S'}
key1 = 'ADE'
value1 = 'AE'

if key1 in mydict:
    mydict[key1].append(value1)
else:
    mydict[key1] = value1

我想追加到mydict['ADE'],使其等于['AD','AE']

但是,这会生成一个AttributeError: 'str' object has no attribute 'append'

我什至尝试了以下方法:

from collections import defaultdict
d = defaultdict(list)
mydict = {'ADE':'AD', 'RS':'S'}
for key, value in mydict.items():
    d[key] = value

d 然后 = defaultdict(list, {'ADE': 'AD', 'RS': 'S'})

然后我运行以下命令:

key1 = 'ADE'
value1 = 'AE'

if key1 in d:
    d[key1].append(value1)
else:
    d[key1] = value1

但我得到同样的错误:AttributeError: 'str' object has no attribute 'append'

【问题讨论】:

  • defaultdict 仅对 missing 键使用默认工厂,例如d['ADE'] 已经存在,因此您只需获取值 'AD'。如果您希望所有键都是列表,请将{'ADE': 'AD', 'RS': 'S'} 更改为{'ADE': ['AD'], 'RS': ['S']}
  • 糟糕。我真是个笨蛋。谢谢这一切,现在一切都说得通了。试图追加到字符串而不是列表。

标签: python python-3.x dictionary append


【解决方案1】:

mydict[key1]string(str 对象 - 类 str 的对象)。 mydict[key1].append(value1) 尝试调用此 str 对象的 append 方法。

str 对象确实具有append 方法,这正是错误消息告诉您的内容:“'str' object has no attribute 'append'”。

如果您想将数据附加到某些东西,请使用集合,例如列表:

mydict = {'ADE': ['AD'], 'RS': ['S']}

if key1 in mydict:
    mydict[key1].append(value1)
else:
    mydict[key1] = [value1]

【讨论】:

    【解决方案2】:

    由于存在密钥ADElist 工厂未被使用,因此错误变得不可避免。

    您可以在一开始就使用列表工厂,因此 if .. in .. 是无用的,因为 defaultdict 的目的是避免自己检查

    from collections import defaultdict
    
    d = defaultdict(list)
    mydict = {'ADE': 'AD', 'RS': 'S'}
    for key, value in mydict.items():
        d[key].append(value)
    
    key1 = 'ADE'
    value1 = 'AE'
    d[key1].append(value1)
    
    print(d)  # defaultdict(<class 'list'>, {'ADE': ['AD', 'AE'], 'RS': ['S']})
    

    【讨论】:

      【解决方案3】:

      附加值是什么意思? ADE 是键,AE 是值。您是否尝试将值更改为 AD? 或者您是否尝试执行类似 AE+AD = AEAD 的操作并将其分配给 ADE 键? 你的问题不清楚。

      您得到的错误是因为 d[key1] 是一个字符串值。字符串类型没有附加功能。

      【讨论】:

        猜你喜欢
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 2022-01-16
        • 2018-04-12
        • 1970-01-01
        • 2018-07-02
        • 1970-01-01
        相关资源
        最近更新 更多