【问题标题】:Convert list of dict into dict with values as keys将字典列表转换为以值为键的字典
【发布时间】:2017-10-02 17:18:03
【问题描述】:

给定字典:

dictData = [{'aaa': 'aaa_value1', 'bbb': 'bbb_value1', 'ccc': 'ccc_value1'}, 
            {'aaa': 'aaa_value1', 'bbb': 'bbb_value2', 'ccc': 'ccc_value2'},
            {'aaa': 'aaa_value2', 'bbb': 'bbb_value3', 'ccc': 'ccc_value3'}]

我想要这个:

   newdictData=[{'aaa_value1':[(bbb_value1,ccc_value1),(bbb_value2, ccc_value2)],
                {'aaa_value2':[(bbb_value3,ccc_value3)],

【问题讨论】:

  • 将有助于为否决投票提供评论,以便我理解。显然,我不是格式化堆栈溢出的专家..谢谢你
  • 我不是反对者,但人们喜欢看看你的尝试。现在看来,您只是希望我们解决您的问题,而您甚至都没有尝试过。
  • dicts是无序的,key是怎么定义的?

标签: python dictionary


【解决方案1】:

您可以使用默认字典:

from collections import defaultdict
d = defaultdict(list)
dictData = [{'aaa': 'aaa_value1', 'bbb': 'bbb_value1', 'ccc': 'ccc_value1'}, 
        {'aaa': 'aaa_value1', 'bbb': 'bbb_value2', 'ccc': 'ccc_value2'},
        {'aaa': 'aaa_value2', 'bbb': 'bbb_value3', 'ccc': 'ccc_value3'}]
for i in dictData:
    the_vals = sorted(i.values())
    d[the_vals[0]].append(the_vals[1:])
print(dict(d))

输出:

{'aaa_value1': [['bbb_value1', 'ccc_value1'], ['bbb_value2', 'ccc_value2']], 'aaa_value2': [['bbb_value3', 'ccc_value3']]}

【讨论】:

  • 你不应该依赖values()的顺序,这也只能在Python 2上工作,所以你真的不应该依赖值的顺序。此外,两次调用值是不必要的低效。
  • @juanpa.arrivillaga 我相信我找到了解决该问题的方法。请查看我最近的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多