首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python 2中根据键向字典添加对象

在Python 2中根据键向字典添加对象
EN

Stack Overflow用户
提问于 2018-09-18 12:32:19
回答 1查看 696关注 0票数 1

我试图根据键将一个对象/字典添加到我已经存在的字典中,但是已经存在的对象正在被覆盖。

我所要达到的目标是:

代码语言:javascript
复制
'CXR100': {'MeSH': {u'major': [u'normal'], u'minor': []}, {u'major': [u'normal'], u'minor': []}}

我得到的是:

代码语言:javascript
复制
'CXR100': {'MeSH': {u'major': [u'normal'], u'minor': []}}

我的代码:

代码语言:javascript
复制
data = dict()
for record in records['list']:
    if data.get(record['uid']):
        data[record['uid']]['MeSH'].update(record['MeSH'])
        # have tried: data[record['uid']]['MeSH'] += {'MeSH': record['MeSH']}
    else:
        data[record['uid']] = {'MeSH': record['MeSH']}

print(data)

在过去的两年里,我一直在编写PHP/Laravel程序,我对Python完全失去了感觉。我希望有人能告诉我我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-18 12:36:20

您可以尝试以下方法:

代码语言:javascript
复制
for record in records['list']:
    if data.get(record['uid']):
        # ... and append to it later 
        data[record['uid']]['MeSH'].append(record['MeSH'])
    else:
        # make it a list initially ...
        data[record['uid']] = {'MeSH': [record['MeSH']]}

或者您可以使用setdefault插入一行:

代码语言:javascript
复制
for record in records['list']:
    data.setdefault(record['uid'], {'MeSH': []})['MeSH'].append(record['MeSH'])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52386680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档