Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串值附加到dict中的现有键_Python_Python 3.x_Dictionary_Append - Fatal编程技术网

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

Python 将字符串值附加到dict中的现有键,python,python-3.x,dictionary,append,Python,Python 3.x,Dictionary,Append,我试图将一个值附加到dict中已经存在的键 我遇到了这个SO链接,但是在这个特殊的例子中,值是整数,而在我的例子中,值是字符串 我想要的是: 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'

我试图将一个值附加到dict中已经存在的键

我遇到了这个SO链接,但是在这个特殊的例子中,值是整数,而在我的例子中,值是字符串

我想要的是:

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”对象没有属性“append”

我甚至尝试了以下方法:

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

if key1 in d:
    d[key1].append(value1)
else:
    d[key1] = value1
d
then=
defaultdict(列表,{'ADE':'AD','RS':'S'})

然后我运行以下命令:

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

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

但是我得到了同样的错误:
AttributeError:'str'对象没有属性'append'

mydict[key1]
是一个
str
ing(一个
str
对象-类
str
的对象)
mydict[key1].append(value1)
尝试调用此
str
对象的
append
方法

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

如果要将数据附加到某个对象,请使用集合,如列表:

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

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

由于键
ADE
存在,因此
列表
工厂未使用,因此错误不可避免

您可以在一开始就使用列表工厂,因此
if。。在..
中是无用的,因为
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']})
从集合导入defaultdict
d=默认DICT(列表)
mydict={'ADE':'AD','RS':'S'}
对于键,mydict.items()中的值:
d[键]。追加(值)
键1='ADE'
值1='AE'
d[key1]。追加(值1)
打印(d)#defaultdict(,{'ADE':['AD','AE'],'RS':['S']})

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


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

defaultdict
仅对缺少的键使用默认工厂,例如,
d['ADE']
已存在,因此您只需获取值
'AD'
。如果希望所有键都是列表,请将
{'ADE':'AD','RS':'S'}
更改为
{'ADE':['AD'],'RS':['S']}
.Oops。我真是个傻瓜。谢谢,现在一切都有意义了。试图附加到字符串而不是列表。