【问题标题】:Create, mix, and match any dict [duplicate]创建、混合和匹配任何字典 [重复]
【发布时间】:2019-03-13 07:13:39
【问题描述】:

我有一个输入数据

block = {
    'kernel' : [3,5,7],
    'strides' : [2,3],
    'padding': ['same'],
    'activation':['relu'],
    'type':['conv'],
}

我想创建一个混搭跟随:

[ {'kernel': 3 ,'strides' : 2, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
  {'kernel': 3 ,'strides' : 3, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
  {'kernel': 5 ,'strides' : 2, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
  {'kernel': 5 ,'strides' : 3, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
  {'kernel': 7 ,'strides' : 2, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
  {'kernel': 7 ,'strides' : 3, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}]

【问题讨论】:

  • counthyperparam 是什么?如果activation 列表中有另一个项目,是否还有更多可能性?
  • 你好,Chakkrit,我从来没有这样做过,他们给你的答案看起来很简单。下次你做一个问题时,试着多描述一点,你的问题,考虑到你使用的数据结构,以及你尝试了什么,这可以帮助任何回答的人,更多,因为他们不需要分析一堆代码一样深,反而更担心,解释的概念。很好的问题,欢迎您。
  • 怎么不起作用?有任何错误信息吗?
  • @ekiim 非常感谢你,下次我会做你的推荐。

标签: python dictionary


【解决方案1】:

您可以使用itertools.product 生成值组合,然后将它们重新构建到字典中:

from itertools import product

keys, possible_values = zip(*block.items())

res = [dict(zip(keys, vals)) for vals in product(*possible_values)]
print(res)

打印

[{'kernel': 3, 'strides': 2, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
 {'kernel': 3, 'strides': 3, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
 {'kernel': 5, 'strides': 2, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
 {'kernel': 5, 'strides': 3, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
 {'kernel': 7, 'strides': 2, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}, 
 {'kernel': 7, 'strides': 3, 'padding': 'same', 'activation': 'relu', 'type': 'conv'}]

【讨论】:

  • 当我们有 dict.keys/dict.values 方法时,keys, possible_values = zip(*block.items()) 看起来是多余的
  • @AzatIbrakov 我不记得keys()values() 是否有相同的顺序。 It looks like they do,你说得对,这样会更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
相关资源
最近更新 更多