【问题标题】:How to insert one dictionary into another dictionary when it is a list in Python?当它是Python中的列表时,如何将一个字典插入另一个字典?
【发布时间】:2019-02-24 06:16:02
【问题描述】:

我在一个列表下有一本字典,我想在该列表中插入另一本字典。所以需要 Python 方面的帮助。

custom_fields = {
    "183": issue['Sprint#'],
    "7": issue['AffectedVersion'],
    "11": issue['Severity'],
    "13": issue['Tag'],
    "180": issue['Tester root cause'],
    "93": issue['Testcase ID'],
    "150": issue['Subsystem']
}
custom_field_payload = {'custom_value_fields':custom_fields.items()}
payload = {'issue' : dict(payload.items()+default_payload.items())}

在问题内部,我想要 custom_field_payload。请帮我解决。

预期输出:

{"issue": {
    "custom_field_values": {
        "183" : "Sprint-1",
        "7" : "12.5.0",
        "11" : "Low (P4)",
        "13" : "Functional",
        "180" : "Legacy Issue identified in Sprint",
        "93" : "CERT-20083926:FN_Update_Gemalto_HSMSettings_Available_Status_DefaultOptionEnabled_ChangeInvalidPassword",
        "150" : "CERTIFICATE"
    },
    "project_id" : 25,
    "category_id": 2380
}}

【问题讨论】:

  • 预期输出:
  • { "issue": { "custom_field_values": { "183": "Sprint-1", "7":"12.5.0", "11":"Low (P4)", “13”:“功能”,“180”:“Sprint 中发现的遗留问题”,“93”:“CERT-20083926:FN_Update_Gemalto_HSMSettings_Available_Status_DefaultOptionEnabled_ChangeInvalidPassword”,“150”:“CERTIFICATE”},“project_id”:25,“category_id” : 2380}}
  • 不清楚你在问什么。请提供回溯和更详细的任务描述

标签: python python-3.x


【解决方案1】:

试试下面,只需将列表添加到items 东西:

custom_field_payload = {'custom_value_fields':custom_fields.items()}
payload = {'issue' : dict(list(payload.items())+list(custom_field_payload.items()))}

【讨论】:

  • 除了 custom_field_payload,我还有额外的有效负载 payload = { "subject": issue['Subject'], "fixed_version_id" : fixed_version_id, "assigned_to_id" : assignee[issue['Assignee']] , "parent_issue_id" : int(issue['ParentTask']), "tracker_id" : trackers[issue['Tracker']], "priority_id" : priority[issue['Priority']], "description": issue['描述'], }
  • @AravindArun 编辑我的。
  • 得到错误不受支持的操作数类型为 +: 'dict' 和 'list'
  • 有效载荷是一本字典
  • @AravindArun 立即尝试
【解决方案2】:

试试这个:

issue = {'Sprint#': "Sprint-1",
         'AffectedVersion': "12.5.0",
         'Severity': "Low (P4)",
         'Tag': "Functional",
         'Tester root cause': "Legacy Issue identified in Sprint",
         'Testcase ID': "CERT-20083926:FN_Update_Gemalto_HSMSettings_Available_Status_DefaultOptionEnabled_ChangeInvalidPassword",
         'Subsystem': "CERTIFICATE"}

default_payload = {"project_id": 25, "category_id": 2380}
custom_fields = {
    "183": issue['Sprint#'],
    "7": issue['AffectedVersion'],
    "11": issue['Severity'],
    "13": issue['Tag'],
    "180": issue['Tester root cause'],
    "93": issue['Testcase ID'],
    "150": issue['Subsystem']
}
custom_field_payload = {'custom_field_values':custom_fields}
p = {'issue' : custom_field_payload}
payload = default_payload.copy()
payload.update(p)

print(payload)

【讨论】:

    【解决方案3】:

    我猜您遇到的错误如下:TypeError: unsupported operand type(s) for +: 'dict_items' and 'dict_items'。让我们解释一下这个错误。

    TypeError -> 首先,我们可以看到这是一个TypeError,这意味着我们在使用哪种类型时出错了。

    unsupported operand type(s) for +: -> 这告诉我们我们尝试添加两个操作数,但它们的类型不受支持(无效)。

    'dict_items' and 'dict_items' -> 最后,这告诉我们我们尝试添加两个dict_items,这是items 内部的items 方法dict 类(dict.items)。

    现在我们知道错误是因为我们尝试添加两个不受支持的dict.items,因此我们无法继续添加这两个。

    我认为您尝试做的是将default_payload 插入payload 字典。为此,您可以将 payload 字典替换为:

    payload = {'issue': custom_field}
    payload.update(default_payload)
    

    dict.update 方法将一个字典插入到另一个字典中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 2022-06-23
      • 2019-05-08
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      相关资源
      最近更新 更多