Python 动态创建字典键,以便附加附加值?
我有一个字典,我将向其中添加数据,如下所示:Python 动态创建字典键,以便附加附加值?,python,dictionary,Python,Dictionary,我有一个字典,我将向其中添加数据,如下所示: mydict = { 'key1': ['First string message', 'Second string message'], 'key2': ['String message'] } 我正在迭代一个json对象,它有两个键-key和message。我想将每个键添加到mydict中,并附加所有具有相同键的消息 例如: [ { 'key': 'key1', 'message': 'F
mydict = {
'key1': ['First string message', 'Second string message'],
'key2': ['String message']
}
我正在迭代一个json对象,它有两个键-key
和message
。我想将每个键添加到mydict
中,并附加所有具有相同键的消息
例如:
[
{
'key': 'key1',
'message': 'First string message'
},
{
'key': 'key2',
'message': 'String message'
},
{
'key': 'key1',
'message': 'Second string message'
},
{
'key': 'key3',
'message': 'Brand new string message'
}
]
不过,我在动态构建词典时遇到了一个问题。如何动态创建键以便附加其他字符串
我尝试过的方法之一是:
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']
但这会失败,因为类型错误:只能将列表(而不是“str”)连接到列表
如何动态创建密钥以便附加其他字符串?您应该使用defaultdict
或setdefault
。我更喜欢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'])