【问题标题】:Nested dictionaries to single dictionary in python将字典嵌套到python中的单个字典
【发布时间】:2018-09-17 15:48:21
【问题描述】:

我正在编辑它

我有两本词典:

x= {'Content-Type': 'application/x-www-form-urlencoded'}
y= {'Accept': 'application/json'}

我需要创建最终字典z = {x, y}

我该怎么做?

我有 headers 变量,它接受以下值

headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'application/json'
}

有人可以帮我将以下格式转换为上述格式吗?

headers = {
    {'Content-Type': 'application/x-www-form-urlencoded'},
    {'Accept': 'application/json'}
}

目前,这个给我以下错误。

TypeError: unhashable type: 'dict'

感谢您的帮助!

【问题讨论】:

  • 删除多余的大括号?非常不清楚您要做什么。
  • 您是如何获得初始格式的? {} 表示具有键值对的字典。你的第二个headers 看起来应该是一本字典
  • 第二个对象不是有效的 JSON / 字典。什么在创建第二个对象?
  • 我能想到的最接近的就是这个headers = {'name1': {'Content-Type': 'application/x-www-form-urlencoded'}, 'name2':{'Accept': 'application/json'}}
  • 您确定不希望新标题成为两个字典的list,目前这种格式没有意义,因为您正在制作一个没有任何内容的新dictionary keys / values 包含两个 dictionaries

标签: python python-3.x dictionary


【解决方案1】:

嗯..这就是我解决它的方法。

z = dict(list(x.items()) + list(y.items()))

结果如预期

   {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json'}

【讨论】:

    【解决方案2】:

    字典不能在 Python 中进行散列 - 列表也不能。我不是 100% 确定你在问什么,但是如果你想将第二个 headers 变量转换为第一个,你需要删除嵌套的大括号。第二个变量对 Python 没有意义,因为您有两个由字典括号包裹的字典。如果您想要的是第二个变量中的列表,则外部嵌套括号需要是列表括号,即 [ ]。

    【讨论】:

      【解决方案3】:

      因为这不是一个有效的格式:

      headers = {
          {'Content-Type': 'application/x-www-form-urlencoded'},
          {'Accept': 'application/json'}
      }
      

      我想假设你的目标是创建这个:

      headers = [
          {'Content-Type': 'application/x-www-form-urlencoded'},
          {'Accept': 'application/json'}
      ]
      

      可以这样做:

      headers = { 
          'Content-Type': 'application/x-www-form-urlencoded', 
          'Accept': 'application/json'
      }
      
      new_headers = []
      
      for k in headers:
          new_dict = {}
          new_dict[k] = headers[k]
          new_headers.append(new_dict)
      
      print(new_headers)
      
      (xenial)vash@localhost:~/python/stack_overflow$ python3.7 convert.py
      [{'Content-Type': 'application/x-www-form-urlencoded'}, {'Accept': 'application/json'}]
      

      【讨论】:

      • 是的,发生了,你的问题仍然提供同样的问题,你说把两个字典变成 z = {x, y} 我相信你想把它写成 z = [x, y] ,认为你正在使用字典格式存储两个字典,但该字典中的每个元素都必须有一个键和一个值,因此您可以拥有 z = { 'x': 'y'} 但这意味着您希望 x 成为 keyy 成为 value或者正如我所说,您似乎想将两个字典放入一个列表中,即z = [x, y]
      • 这更像是同时传递 2 个标头,例如 headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json' }
      • 它可以是一个或另一个你喜欢z = [x, y]z = {x:y}
      • 没有。它要么说 [{'Content-Type': 'application/x-www-form-urlencoded'}, {'Accept': 'application/json'}] 要么 headers = {self.header_content_type_x_www_form_urlencoded: self.header_accept_json} TypeError:不可散列的类型:'dict'
      • 抱歉,您要完成的工作非常不清楚,您想要的结果在 python 中不是有效格式
      猜你喜欢
      • 2018-05-31
      • 1970-01-01
      • 2018-01-29
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 2022-06-11
      • 2020-07-29
      相关资源
      最近更新 更多