首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python多个实例或“Sub Dict”问题-以编程方式添加项。

Python多个实例或“Sub Dict”问题-以编程方式添加项。
EN

Stack Overflow用户
提问于 2019-05-10 01:52:42
回答 2查看 78关注 0票数 2

我希望在python中创建一个具有许多“子值”(Sub)的dict,我需要通过编程来填充这些值。此dict将用于将文档添加到MongoDB数据库。

我最终想要使用的一种方法是:

代码语言:javascript
复制
    host_dict = {
    'installed_applications':
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    }
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    }
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    }
        {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    }
}

我想做的是:

代码语言:javascript
复制
host_dict = {}
apps = get_installed_apps(host)
host_dict['installed_applications'] = {}
for app in apps:
    host_dict['installed_applications']['name'] = app[0]
    host_dict['installed_applications']['version'] = app[1]
    host_dict['installed_applications']['uninstall_string'] = app[2]
    host_dict['installed_applications']['install_date'] = app[3]
    host_dict['installed_applications']['install_location'] = app[4]
    host_dict['installed_applications']['publisher'] = app[5]

问题是,它并没有在每个应用程序的实例中追加,而是重写了一个“sub”(这就是您所称的吗?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-10 02:12:09

如果我错了,请纠正我,但是host_dict不是一个有效的字典,我将假设您试图创建一个包含installed_applications键并将值作为列表的字典,所以它将如下所示

代码语言:javascript
复制
host_dict = {
    'installed_applications':
    [{
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    },
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    },
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    },
        {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    }]
}

在这种情况下,您可以轻松地创建值,方法是在apps上迭代,将必需的键值对添加到列表中,然后将该列表分配给installed_applications键。

代码语言:javascript
复制
host_dict = {}
apps = get_installed_apps(host)
host_dict['installed_applications'] = {}

#List to store list of dictionaries
li = []
#Iterate through apps
for app in apps:
    #Create a dictionary for app and append to the list
    dct = {}
    dct['name'] = app[0]
    dct['version'] = app[1]
    dct['uninstall_string'] = app[2]
    dct['install_date'] = app[3]
    dct['install_location'] = app[4]
    dct['publisher'] = app[5]
    li.append(dct)

#Assign the list
host_dict['installed_applications'] = li

或者缩短代码,我们可以

代码语言:javascript
复制
host_dict = {}
apps = get_installed_apps(host)
host_dict['installed_applications'] = {}

#List to store list of dictionaries
li = []

#List of keys for app
app_keys = ['name', 'version', 'uninstall_string', 'install_date', 'install_location', 'publisher']

#Iterate through apps
for app in apps:
    dct = {}
    #Make the dictionary
    for idx, item in enumerate(app):
        dct[app_keys[item]] = item

    li.append(dct)

#Assign the list
host_dict['installed_applications'] = li
票数 0
EN

Stack Overflow用户

发布于 2019-05-10 02:11:19

您的host_dict示例不是一个有效的python结构,但是您可以通过将installed_applications值作为一个列表来修复这个结构,因此您可以将项附加到这个列表中,每个项都是一个dict,如下所示:

代码语言:javascript
复制
apps = get_installed_apps(host)
host_dict = {'installed_applications': []}
for app in apps:
    new_app = {
        'name': app[0],
        'version': app[1],
        'uninstall_string': app[2],
        'install_date': app[3],
        'install_location': app[4],
        'publisher': app[5]
    }
    host_dict['installed_applications'].append(new_app)

最后,host_dict['installed_applications']将有一个列表,其中每个值都是一个应用程序,类似于以下内容:

代码语言:javascript
复制
host_dict = {
'installed_applications': [
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    },
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    },
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    },
    {
        'name': 'alsdfasdf',
        'version': '1',
        'installed_date': '11-11-11',
    }]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56069703

复制
相关文章

相似问题

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