首页 > 解决方案 > `a = b = c` 与 `b = c` 不一样 \n `a = b`?

问题描述

我找到了将平面字典转换为嵌套字典的代码:

def insert(dct, lst): 
    for x in lst[:-2]: 
        dct[x] = dct = dct.get(x, dict()) 
    dct.update({lst[-2]: lst[-1]}) 


def convert_nested(dct): 
    # empty dict to store the result 
    result = dict() 

    # create an iterator of lists  
    # representing nested or hierarchial flow 
    lsts = ([*k.split("_"), v] for k, v in dct.items()) 

    # insert each list into the result 
    for lst in lsts: 
        insert(result, lst) 
    return result 

# initialising_dictionary 
ini_dict = {'Geeks_for_for':1,'Geeks_for_geeks':4, 
            'for_geeks_Geeks':3,'geeks_Geeks_for':7} 

# priniting initial dictionary 
print ("initial_dictionary", str(ini_dict)) 
#--> initial_dictionary {'Geeks_for_for': 1, 'Geeks_for_geeks': 4, 'for_geeks_Geeks': 3, 'geeks_Geeks_for': 7}


# printing final dictionary 
print ("final_dictionary", str(convert_nested(ini_dict))) 
#--> final_dictionary {'Geeks': {'for': {'for': 1, 'geeks': 4}}, 'for': {'geeks': {'Geeks': 3}}, 'geeks': {'Geeks': {'for': 7}}}

我试图了解它所采取的每一步(这不是我的问题的重点)。

特别是内部函数insert(dct, lst)

为了调试这个,我将它转换为:

def insert(dct, lst): 
    for x in lst[:-2]: 
        dct = dct.get(x, dict()) 
        dct[x] = dct  
    dct.update({lst[-2]: lst[-1]}) 

但令我惊讶的是,结果完全不同(最终结果字典为空)。我以为a = b = c会是一样的b = ca = b

标签: python

解决方案


推荐阅读