【问题标题】:How to combine a list and dictionary in Python?如何在 Python 中结合列表和字典?
【发布时间】:2018-10-22 16:47:39
【问题描述】:

1) 我们如何将 dict 与 list 结合并以 JSON 形式返回结果? 已尝试组合 list_1(dict) 和 list_2(list),但出现错误。此外,将它们转换为字符串后可以组合但无法解码回 JSON 格式(如下面的预期结果)。

2) 另外,如何替换 JSON 中的值并将其维护为 JSON?

list_1 = [{'title': 'NEWBOOK', 'downloads': '4', 'views': '88'}]

list_2 = {'title': 'MASTERMIND', 'downloads': '16', 'views': '156'}

list_3 = {
       'a': 'b',
       'c': 'd',
       'e': [{
         'f': 'g',
         'l': 'm'
         }]
       }

我尝试过的脚本如下。

combine = list_1 +  list_2



for z in list_3['e']:

list_3 = list_3.replace(z, combine)

Expected_json = json.dumps(list_3)

print(list_3)

错误1:

combine = list_1 +  list_2

TypeError:只能将列表(不是“dict”)连接到列表

错误2:

list_3 = list_3.replace(z, combine)

AttributeError: 'dict' 对象没有属性 'replace'

预期结果:

list_3 = {
    "a": "b",
    "c": "d",
    "e": [{
            "f": "g",
            "l": "m"
        },
        {
            "title": "NEWBOOK",
            "downloads": "4",
            "views": "88"
        },
        {
            "title": "MASTERMIND",
            "downloads": "16",
            "views": "156"
        }
    ]
}

【问题讨论】:

  • 嗯。看起来像list_3['e'].extend(list_1); list_3['e'].append(list_2)。不过,这些数据有点奇怪。你从哪里得到它?如果您自己生成它,可能有一种组织方式可以使这些下游应用程序更简单。
  • 您是否总是想在字典中的“e”键中添加列表。我的意思是你知道你想在 list_3 中的哪个键条目上添加列表
  • 这是一个现有的应用程序,所以我无法控制它,正如我所提到的那样非常需要它。
  • 是的,想替换list_3[e]中的整个字典。

标签: python json arraylist type-conversion


【解决方案1】:

只需追加到字典中的列表

list_3['e'].append(list_2)
list_3['e'].append(list_1[0])
print(list_3)

{
    'a':
    'b',
    'c':
    'd',
    'e': [{
        'f': 'g',
        'l': 'm'
    }, {
        'title': 'MASTERMIND',
        'downloads': '16',
        'views': '156'
    }, {
        'title': 'NEWBOOK',
        'downloads': '4',
        'views': '88'
    }]
}

【讨论】:

    【解决方案2】:
    import json    
    list_1 = [{'title': 'NEWBOOK', 'downloads': '4', 'views': '88'}]
    
    list_2 = {'title': 'MASTERMIND', 'downloads': '16', 'views': '156'}
    
    list_3 = {
           'a': 'b',
           'c': 'd',
           'e': [{
             'f': 'g',
             'l': 'm'
             }]
           }
    
    
    list_3['e'].append(list_1[0])
    
    list_3['e'].append(list_2)
    json_list = json.dumps(list_3)
    

    如果您想向该位置添加更多列表,请执行以下操作

    b= json.loads(json_list)
    b['e'].append(your_new_dict)
    json_list = json.dumps(b)
    

    如果您不知道 list_1 和 list_2 是什么,那么您可以测试类类型并相应地附加它们。喜欢

    if(type(list_1)==list):
        list_3['e'].append(list_1[0])
    if(type(list_2)==dict):
        list_3['e'].append(list_2)
    

    如果您不知道要在 list_3 中的哪个位置添加列表。您执行以下操作。假设 list_3 中只有一个列表

    for x in list_3.values():
        if(type(x)==list):
            x.append(list_1[0])
            x.append(list_2)
    

    【讨论】:

    • 对不起,仍然无法停止要求,需要将“新”添加到 list3,如下所示(预期结果)。这是由于来自下游应用程序的 json 的复杂性。这里面临的挑战是无法使用 python 追加或扩展,因为 new 不是正确的列表或字典。任何解决方案将不胜感激。新 = 'm':{'n' : 'o'} list3 = { 'a': [{'b' : 'c'},{'d' : 'e'}], 'f': [{ 'g': {'h': 'i'}, 'j': {'k': 'l'} }] }
    • 预期结果:{ "a": [{"b" : "c"},{"d" : "e"}], "f": [{ "g": {" h" : "i"}, "j": {"k" : 'l"}, "m": {"n" : "o"} }] }
    • 所以你想将 new 追加到 list3,但问题是 new 不是正确的字典??
    • 为了使上述所有方法都能正常工作,您必须确保“new”是一个字典。您可以使用 python dict 构造函数来创建 dicts。在这里找到一些例子,programiz.com/python-programming/methods/built-in/dict。但是,如果您获得的“新”数据点在每次调用时都会发生变化,那么请给我们一些示例,我们可能会为您提供更多帮助……但是 dict() 构造函数应该适合您。如果您需要示例,请告诉我...
    • 我已经浏览了文档,我需要强调的一件事是 new = 'm':{'n' : 'o'} 结构不会改变并且它的值总是已知的.只想将“新”附加到字典。
    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 2022-01-19
    • 2018-01-11
    相关资源
    最近更新 更多