首页 > 解决方案 > 用于将字典值转换为单独字典的单行

问题描述

我有一个字典 dict1,它的值也是字典

dict1 = 
  {
   0: {'test1': ['pass', 'pass']},
   1: {'test2': ['fail', 'pass']},
   2: {'test3': ['fail', 'fail']},
   3: {'test4': []},
   4: {'test5': ['pass']},
   5: {'test6': ['pass', 'pass']}
  }

我想把它的值作为一个单独的字典 dict2,我试过这样

dict2 = {k:v for k,v in dict(dict1.values()).items()}

我在下面收到错误

ValueError: dictionary update sequence element #0 has length 1; 2 is required

预期产出

dict2 =
      {
      'test1': ['pass', 'pass'],
      'test2': ['fail', 'pass'],
      'test3': ['fail', 'fail'],
      'test4': [],
      'test5': ['pass'],
      'test6': ['pass', 'pass']
      }

任何帮助表示赞赏

标签: pythondictionary

解决方案


您可以 *将 dict 值放入链图中:

>>> from collections import ChainMap
>>> dict(ChainMap(*dict1.values()))
{'test6': ['pass', 'pass'],
 'test5': ['pass'],
 'test4': [],
 'test3': ['fail', 'fail'],
 'test2': ['fail', 'pass'],
 'test1': ['pass', 'pass']}

实际上,链式映射也是一种映射(类似于 dict 的 API),因此您可能根本不需要外部 dict 调用。如果您希望保留顺序,则将值放入 with reversed


推荐阅读