如何将OrderedDict转换为Dict

时间:2019-06-07 12:25:46

标签: python python-3.x dictionary ordereddictionary ordereddict

我有此列表

a = [OrderedDict([('a','b'), ('c','d'), ('e', OrderedDict([('a','b'), ('c','d') ]))])]

我想在字典中转换OrderedDict。

你知道我该怎么办吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

要转换嵌套的OrderedDict,可以使用软件包json

>>> import json
>>> json.loads(json.dumps(a))

[{'a': 'b', 'c': 'd', 'e': {'a': 'b', 'c': 'd'}}]

答案 1 :(得分:0)

您可以构建一个递归函数来执行从OrderedDict到dict的转换,并在整个过程中使用isinstance调用检查数据类型。

from collections import OrderedDict

def OrderedDict_to_dict(arg):
    if isinstance(arg, (tuple, list)): #for some iterables. might need modifications/additions?
        return [OrderedDict_to_dict(item) for item in arg]

    if isinstance(arg, OrderedDict): #what we are interested in
        arg = dict(arg)

    if isinstance(arg, dict): #next up, iterate through the dictionary for nested conversion
        for key, value in arg.items():
            arg[key] = OrderedDict_to_dict(value)

    return arg

a = [OrderedDict([('a','b'), ('c','d'), ('e', OrderedDict([('a','b'), ('c','d') ]))])]


result = OrderedDict_to_dict(a)
print(result)
#Output:
[{'a': 'b', 'c': 'd', 'e': {'a': 'b', 'c': 'd'}}]

但是,请注意,OrderedDicts 也是词典,并且支持键查找。

print(a[0]['e'])
#Output:
OrderedDict([('a', 'b'), ('c', 'd')])

a[0]['e']['c']
#Output:
'd'

因此,如果您只需要按字典允许的方式访问值,则无需将OrderedDicts转换为dict,因为OrderedDict支持相同的操作。

答案 2 :(得分:0)

要转换嵌套的 OrderedDict,您可以使用 For:

from collections import OrderedDict
a = [OrderedDict([('id', 8)]), OrderedDict([('id', 9)])]
data_list = []
for i in a:
    data_list.append(dict(i))
print(data_list)
#Output:[{'id': 8}, {'id': 9}]