gpt4 book ai didi

python - 动态创建字典键,我可以在其中附加附加值?

转载 作者:行者123 更新时间:2023-11-30 21:58:54 27 4
gpt4 key购买 nike

我有一个字典,我将向其中添加数据,如下所示:

mydict = {
'key1': ['First string message', 'Second string message'],
'key2': ['String message']
}

我正在迭代一个 json 对象,该对象有两个键 - keymessage。我想将每个 key 添加到 mydict 中,并附加具有相同 key 的所有 message

示例:

[
{
'key': 'key1',
'message': 'First string message'
},
{
'key': 'key2',
'message': 'String message'
},
{
'key': 'key1',
'message': 'Second string message'
},
{
'key': 'key3',
'message': 'Brand new string message'
}
]

不过,我在动态构建字典时遇到了问题。如何动态创建 key 以便附加其他字符串?

我尝试过的方法之一是:

import json
response = [
{
'key': 'key1',
'message': 'First string message'
},
{
'key': 'key2',
'message': 'String message'
},
{
'key': 'key1',
'message': 'Second string message'
},
{
'key': 'key3',
'message': 'Brand new string message'
}
]
mydict = {}
for r in response:
mydict[r['key']] = mydict.get(r['key'], [r['message']])

print(mydict)
{'key1': ['First string message'], 'key2': ['String message'], 'key3': ['Brand new string message']}

这显然没有达到我的预期结果,因为 key1 不包含这两个字符串。

我尝试过这个:

for r in response:
mydict[r['key']] = mydict.get(r['key'], [r['message']]) + r['message']

但是这会失败,并出现 TypeError: can only concatenate list (not "str") to list

如何动态创建 key 以便附加其他字符串?

最佳答案

您应该使用defaultdictsetdefault。我更喜欢 defaultdict:

from collections import defaultdict

response = [
{
'key': 'key1',
'message': 'First string message'
},
{
'key': 'key2',
'message': 'String message'
},
{
'key': 'key1',
'message': 'Second string message'
},
{
'key': 'key3',
'message': 'Brand new string message'
}
]

mydict = defaultdict(list)

for r in response:
mydict[r['key']].append(r['message'])

使用setdefault,您可以使mydict成为常规字典:

mydict = {}
for r in response:
mydict.setdefault(r['key'], []).append(r['message'])

关于python - 动态创建字典键,我可以在其中附加附加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54755104/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com