我有一个迪克特,我想通过组合两个最外层的键,把它转换成一个迪克特。有什么优雅的方法吗?
下面是最初的dict:
alldic={}
for a in range(3):
machinedic={}
for x in range(5):
machinetimedic={}
for i in range(4):
machinetimedic["variable0"]=0
machinetimedic["variable1"]=1
machinedic["time "+str(x)]=machinetimedic
alldic["machine "+str(a)]=machinedic我想要的是一堆这样的白痴:
{'machine 0-time 0': {'variable0': 0, 'variable1': 1},
'machine 0-time 1': {'variable0': 0, 'variable1': 1},
'machine 0-time 2': {'variable0': 0, 'variable1': 1},
'machine 0-time 3': {'variable0': 0, 'variable1': 1},
'machine 0-time 4': {'variable0': 0, 'variable1': 1},
'machine 1-time 0': {'variable0': 0, 'variable1': 1},
'machine 1-time 1': {'variable0': 0, 'variable1': 1},
'machine 1-time 2': {'variable0': 0, 'variable1': 1},
'machine 1-time 3': {'variable0': 0, 'variable1': 1},
'machine 1-time 4': {'variable0': 0, 'variable1': 1},
'machine 2-time 0': {'variable0': 0, 'variable1': 1},
'machine 2-time 1': {'variable0': 0, 'variable1': 1},
'machine 2-time 2': {'variable0': 0, 'variable1': 1},
'machine 2-time 3': {'variable0': 0, 'variable1': 1},
'machine 2-time 4': {'variable0': 0, 'variable1': 1}}发布于 2014-10-23 03:17:51
迭代工作得很好:
>>> all_new_dic = {}
>>> for key in alldic:
for k in alldic[key]:
new_key = key + '-' + k
all_new_dic[new_key] = alldic[key][k]
>>> all_new_dic
{'machine 1-time 4': {'variable1': 1, 'variable0': 0}, 'machine 1-time 0': {'variable1': 1, 'variable0': 0}, 'machine 1-time 1': {'variable1': 1, 'variable0': 0}, 'machine 1-time 2': {'variable1': 1, 'variable0': 0}, 'machine 1-time 3': {'variable1': 1, 'variable0': 0}, 'machine 2-time 4': {'variable1': 1, 'variable0': 0}, 'machine 2-time 1': {'variable1': 1, 'variable0': 0}, 'machine 2-time 0': {'variable1': 1, 'variable0': 0}, 'machine 2-time 3': {'variable1': 1, 'variable0': 0}, 'machine 2-time 2': {'variable1': 1, 'variable0': 0}, 'machine 0-time 3': {'variable1': 1, 'variable0': 0}, 'machine 0-time 2': {'variable1': 1, 'variable0': 0}, 'machine 0-time 1': {'variable1': 1, 'variable0': 0}, 'machine 0-time 0': {'variable1': 1, 'variable0': 0}, 'machine 0-time 4': {'variable1': 1, 'variable0': 0}}发布于 2014-10-23 03:13:37
不要筑巢,就这样把它压平。
alldic={}
for a in range(3):
machinedic={}
for x in range(5):
machinetimedic={}
for i in range(4):
machinetimedic["variable0"]=0
machinetimedic["variable1"]=1
alldic["machine {}-time {}".format(a, x)] = machinetimedic或者,您可以通过字典理解获得相同的结果,如下所示
>>> {"machine {}-time {}".format(a, x) : {"variable0": 0, "variable1" : 1}
for a in range(3) for x in range(5)}
{'machine 0-time 0': {'variable0': 0, 'variable1': 1},
'machine 0-time 1': {'variable0': 0, 'variable1': 1},
'machine 0-time 2': {'variable0': 0, 'variable1': 1},
'machine 0-time 3': {'variable0': 0, 'variable1': 1},
'machine 0-time 4': {'variable0': 0, 'variable1': 1},
'machine 1-time 0': {'variable0': 0, 'variable1': 1},
'machine 1-time 1': {'variable0': 0, 'variable1': 1},
'machine 1-time 2': {'variable0': 0, 'variable1': 1},
'machine 1-time 3': {'variable0': 0, 'variable1': 1},
'machine 1-time 4': {'variable0': 0, 'variable1': 1},
'machine 2-time 0': {'variable0': 0, 'variable1': 1},
'machine 2-time 1': {'variable0': 0, 'variable1': 1},
'machine 2-time 2': {'variable0': 0, 'variable1': 1},
'machine 2-time 3': {'variable0': 0, 'variable1': 1},
'machine 2-time 4': {'variable0': 0, 'variable1': 1}}https://stackoverflow.com/questions/26520652
复制相似问题