代码之家  ›  专栏  ›  技术社区  ›  Manoj Kengudelu

在python中从嵌套字典到单个字典

  •  -4
  • Manoj Kengudelu  · 技术社区  · 6 年前

    我正在编辑它

    我有两本字典:

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

    z = {x, y}

    我该怎么做?

    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'
    

    3 回复  |  直到 6 年前
        1
  •  1
  •   Manoj Kengudelu    6 年前

    好。。我就是这样解决的。

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

    结果和预期一样

       {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json'}
    
        2
  •  0
  •   tlm    6 年前

    在Python中不能对字典进行哈希运算——列表也不能。我不是100%确定你在问什么,但是如果你想把第二个headers变量转换成第一个,你需要去掉嵌套的花括号。第二个变量对Python没有意义,因为您有两个用字典括号包装的字典。如果您想要的是第二个变量中的列表,则外部嵌套的方括号必须是列表方括号,即[]。

        3
  •  0
  •   vash_the_stampede    6 年前

    因为这不是有效的格式:

    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'}]