【问题标题】:Converting a dictionary of dictionaries to a List of dictionaries将字典字典转换为字典列表
【发布时间】:2018-08-21 06:13:38
【问题描述】:

我有一本字典。有没有办法将其转换为字典列表? 如果不是,那么 filter() 方法是如何用于过滤字典中的数据的?

【问题讨论】:

标签: python list dictionary


【解决方案1】:

列表理解应该可以完成这项工作,不需要filter()

>>> dic_of_dics = {1: {"a": "A"}, 2: {"b": "B"}, 3: {"c": "C"}}

>>> list_of_dics = [value for value in dic_of_dics.values()]

>>>list_of_dics
[{'a': 'A'}, {'b': 'B'}, {'c': 'C'}]

【讨论】:

    【解决方案2】:

    仅提及在下一级字典中保持与“id”相关联的第一级“key”的解决方案。

    改写它“将字典字典转换为字典列表 把钥匙放在里面”。

    >>> dic_of_dics = {1: {"a": "A"}, 2: {"b": "B"}, 3: {"c": "C"}}
    
    >>> [(lambda d: d.update(id=key) or d)(val) for (key, val) in dic_of_dics.items()]
    [{'a': 'A', 'id': 1}, {'b': 'B', 'id': 2}, {'c': 'C', 'id': 3}]
    

    【讨论】:

    • 这正是我想要的。
    【解决方案3】:

    我知道这个问题有点老了,但以防万一有人需要我正在寻找的解决方案:

    如果您想保留外部 dict 的键而不将它们作为内部 dict 中的值,以下代码为每个内部 dict 生成一个元组列表 (key, dict)

    >>> dic_of_dics = {1: {"a": "A"}, 2: {"b": "B"}, 3: {"c": "C"}}
    >>> [(k,v) for k, v in dic_of_dics.items()]
    [(1, {'a': 'A'}), (2, {'b': 'B'}), (3, {'c': 'C'})]
    

    我用它通过add_nodes_from() 函数从to_dict('index') 函数从pandas 生成的字典中定义了一个networkx 图表,它就像一个魅力。

    【讨论】: