首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将词典词典转换为词典词典

将词典词典转换为词典词典
EN

Stack Overflow用户
提问于 2014-10-23 03:08:09
回答 2查看 35关注 0票数 0

我有一个迪克特,我想通过组合两个最外层的键,把它转换成一个迪克特。有什么优雅的方法吗?

下面是最初的dict:

代码语言:javascript
复制
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

我想要的是一堆这样的白痴:

代码语言:javascript
复制
{'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}}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-23 03:17:51

迭代工作得很好:

代码语言:javascript
复制
>>> 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}}
票数 1
EN

Stack Overflow用户

发布于 2014-10-23 03:13:37

不要筑巢,就这样把它压平。

代码语言:javascript
复制
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

或者,您可以通过字典理解获得相同的结果,如下所示

代码语言:javascript
复制
>>> {"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}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26520652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档