将字符串值追加到dict中的现有键

问题描述

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

我遇到了这个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'

解决方法

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

str对象不是具有append方法,这正是错误消息告诉您的内容:“'str'对象没有属性'append'”

如果要将数据追加到某物,请使用一个集合,例如列表:

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

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

由于存在密钥ADE,因此list工厂未使用,因此错误不可避免。

您可能在一开始就使用列表工厂,因此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']})
,

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...