Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过更新OrderedICT来保持订单_Python_Python 3.5_Ordereddictionary - Fatal编程技术网

Python 如何通过更新OrderedICT来保持订单

Python 如何通过更新OrderedICT来保持订单,python,python-3.5,ordereddictionary,Python,Python 3.5,Ordereddictionary,请告诉我 说明 我想使用dict的更新方法更新类型为orderedict的变量的值。 但是,在执行更新方法后,更新目标变量的OrderedDict类型将丢失,无法按预期进行输出 问题点: 丢失订购的ICT类型是否有故障 是否有另一种方法可以更新dict,同时保持OrderedDict的类型 下面是这个问题的一个例子 更新具有重新绑定受影响键的效果。简而言之,您正在做的是: # ... dic['b'] = OrderedDict() # ... dic['b'] = {'b1': 3, 'b2

请告诉我

说明

我想使用dict的更新方法更新类型为
orderedict
的变量的值。 但是,在执行更新方法后,更新目标变量的
OrderedDict
类型将丢失,无法按预期进行输出

问题点:

  • 丢失订购的ICT类型是否有故障
  • 是否有另一种方法可以更新dict,同时保持
    OrderedDict
    的类型
  • 下面是这个问题的一个例子




    更新具有重新绑定受影响键的效果。简而言之,您正在做的是:

    # ...
    dic['b'] = OrderedDict()
    # ...
    dic['b'] = {'b1': 3, 'b2': 4, 'b3': 5}
    # ...
    
    dic
    中键
    'b'
    的新值现在是通用的
    dict
    。您正在尝试执行某些嵌套更新,这些更新不是现成提供的。您可以按照以下方式自行实施:

    def update(d1, d2):
        for k, v in d2.items():
            if k in d1 and isinstance(v, dict) and isinstance(d1[k], dict):
                update(d1[k], v)
            else:
                d1[k] = v
    
    现在,您可以将其应用于您的案例:

    update(dic, new_dic)
    # OrderedDict([('a', 2), ('b', OrderedDict([('b1', 3), ('b2', 4), ('b3', 5)]))])
    
    换行

    new_dic = {'a': 2, 'b': {'b1': 3, 'b2': 4, 'b3': 5}}
    


    没事的

    我感谢你的回答。我第一次使用这个网站,但很快我就感到惊讶。非常感谢你。
    from collections import OrderedDict
    
    dic = OrderedDict()
    
    dic['a'] = 1
    dic['b'] = OrderedDict()
    dic['b']['b1'] = 2
    dic['b']['b2'] = 3
    dic['b']['b3'] = 4
    
    print(dic)
    #> OrderedDict([('a', 1), ('b', OrderedDict([('b1', 2), ('b2', 3), ('b3', 4)]))]) # ok
    
    new_dic = {'a': 2, 'b': {'b1': 3, 'b2': 4, 'b3': 5}}
    new_dic['b'] = OrderedDict(new_dic['b'])
    print(new_dic)
    #> {'a': 2, 'b': OrderedDict([('b1', 3), ('b2', 4), ('b3', 5)])}    
    dic.update(new_dic)
    
    print(dic)
    #> OrderedDict([('a', 2), ('b', OrderedDict([('b1', 3), ('b2', 4), ('b3', 5)]))])
    
    new_dic = {'a': 2, 'b': {'b1': 3, 'b2': 4, 'b3': 5}}
    
    new_dic = {'a': 2, 'b': OrderedDict([('b1', 3), ('b2', 4), ('b3', 5)])}