【问题标题】:How to append a multiple dictionaries to a list from a loop, python?python - 如何将多个字典从循环中附加到列表中,python?
【发布时间】:2022-01-04 04:01:20
【问题描述】:

如何将每个循环生成的字典附加到列表中,以便最后我的函数返回一个 n 字典列表?没有任何花哨的库,只是普通的 python?

def inner_loop(*args):
    for X, y in zip(X, y):
        a_dict = {'t':None, 'p':None}
        t_range = range(1, 10)
        p_range = range('high','low')
        best_acc = 0
        list_of_dicts = []

        #best grid selection
        for t in t_range:
            for p in p_range:
                model(X, temp=t, press=p)
                predict = model.prdeicting(y)
                acc = (np.sum(predict == y))/len(y)

                if acc > best_acc:
                    best_acc = acc
                    a_dict['t']= t
                elif p == 'high':
                    a_dict.['p']='high'
                elif p == 'low': 
                    a_dict.['p']='low'

        # I tried all options I knew here nothing really works:
        list_of_dicts.append(a_dict)
        list_of_dicts.append(a_dict.copy())
        list_of_dicts.append(dict(a_dict))
        
        return list_of_dicts

该函数返回一个字典实例,但从不返回所有已生成字典的附加列表。有人可以帮忙吗?

【问题讨论】:

  • 你必须在外部 for 循环开始之前放置 list_of_dicts = [] 的声明,否则它只会继续覆盖列表而不是附加到它:/
  • 感谢您的及时回复,这很有帮助,问题是该函数是 class 的一部分,我不知道如何将声明放在函数之前。我必须在__init__ 函数中声明list_of_dicts = [] 吗?

标签: python list dictionary append


【解决方案1】:
def func(*args):
    list_of_dicts = []

    for X, y in zip(X, y):
        a_dict = make_your_a_dict() # what you do in your example 
        list_of_dicts.append(a_dict)

    return list_of_dicts # check indentation level

也许可以。

【讨论】:

  • 我明白了,问题是包含该函数的类函数的构造方式与示例中不同。无论如何,您的建议很有帮助!干杯!
猜你喜欢
  • 2020-12-06
  • 2016-04-04
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2016-10-14
相关资源
最近更新 更多