python - `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 = c
, a = b
?
解决方案
推荐阅读
- python - 如何在远程 linux 服务器上运行 python 代码?
- swift - SwiftUI - 从 Swift 类启动的可观察对象不会更新 ContentView() 上的 @ObservedObject
- javascript - 在 Javascript 中分号后的新行上更正光标缩进
- python - Pyspark - 选择、分组和分析日志
- wpf - WPF prism:在切换开关上使用命令
- css - CSS - 如何在 IE 中修复网格
- javascript - 如何使列类型系列次要 yAxis 值动态而不总是以 0 开头?
- amazon-web-services - ECS I/O 耗时过长
- c# - MetroPanel.Paint 不绘画
- python-3.x - 为什么 AWS SAM 给我随机的 DynamoDB 表名