Python无法从字典列表中创建字典

时间:2016-02-18 11:11:50

标签: python django

由于django formset错误,我有词典列表:

[{}, {"field": ["This field is required."]}, {"field": ["This field is required."]}]

我想创建一个字典,其中key是字典索引+字段名称,值是错误消息:

err = formset.errors
for dict in err:
    for error in dict:
        results[str(err.index(dict))+'-'+error] = dict[error]

问题是我只从错误中得到一个值,而不是全部。我怎么解决这个问题?感谢

3 个答案:

答案 0 :(得分:2)

你非常接近。首先,我会使用枚举,因为它意味着要做什么。并使用iteritems(python 2.7)迭代dict。:

for idx, _dict in enumerate(err):
    for error_key, error_value in _dict.iteritems():
        results[str(idx)+'-' + error_key] = error_value

print results

我得到了:

  

{' 1-field':['此字段为必填项。'],' 2-field':['此字段为。需要']}

*正如评论中所述 - 不要使用dict,因为它在python上保留了单词。

答案 1 :(得分:0)

err = formset.errors
D = {}
for i in len(err):
    crr_field = err[i].keys()[0]
    error_msg  = "{field} error: {error}".format(field=crr_field,error=err[i][crr_field])
    D[i] = error_msg

D将为{1:"Field field1 error: field is required",2:....}

答案 2 :(得分:0)

试试这个

results = {}
err = formset.errors
for i, my_dict in enumerate(err):
    for key, value in my_dict.items():
        results[str(i)+'-'+key] = value

items()适用于python3,因为iteritems()已被删除。