python - 以键和值作为子列表的反转字典

标签 python list-comprehension

我想看看是否有人能提出解决我遇到的问题的想法。

我想尝试以某种方式翻转字典的子列表和列表。以下内容应该介绍我的目标。

olddict = {
  'Cat1': {
    'a': 0.9628883469409395,
    'b': 0.2215033887861984,
    'c': 0.011300919842312747,
    'd': 0.006507874528179097,
    'e': 0.0038535645472061657},
  'Cat2': {'a': 0.9984095005831831,
    'b': 0.7831176833025262,
    'c': 0.2980289093298292,
    'd': 0.04152023948978264,
    'e': 0.9772639691714836},
  'Cat3': {'a': 0.467005076142132,
    'b': 1.0,
    'c': 0.9810315430520035,
    'd': 0.37869041728517233,
    'e': 0.5812393632996296}}

像这样:

newdict = {
  'a': {
    'Cat1': 0.9628883469409395,
    'Cat2': 0.9984095005831831,
    'Cat3': 0.467005076142132},
  'b': {
    'Cat1': 0.2215033887861984,
    'Cat2': 0.7831176833025262,
    'Cat3': 1.0},
  'c': {
    'Cat1': 0.011300919842312747,
    'Cat2': 0.2980289093298292,
    'Cat3': 0.9810315430520035},
  'd': {
    'Cat1': 0.9628883469409395,
    'Cat2': 0.04152023948978264,
    'Cat3': 0.37869041728517233},
  'e': {
    'Cat1': 0.0038535645472061657,
    'Cat2': 0.9772639691714836,
    'Cat3': 0.5812393632996296}}

有了这个,我就可以创建新词典的总体布局。但是,我也没有添加这些值。

newdict = {}
for key, value in olddict.items():
    for string,v in value.items():
        newdict.setdefault(string, []).append(key)

如果有任何帮助,我将不胜感激。提前致谢!

最佳答案

newdict = defaultdict(dict)
for cat, letters in olddict.items():
  for letter, value in letters.items():
    newdict[letter][cat] = value

关于python - 以键和值作为子列表的反转字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57397707/

相关文章:

Python QT5无法显示另一个类的消息框

python - 如何为任意数量的任意键/值对键入提示/类型检查字典(在运行时)?

python - jinja2模板引擎中的这个 "-"是做什么的?

python - 如何使用 numpy 追加 2 个具有不同尺寸和形状的 numpy 图像数组

python - 如何在 python 中计算一级 SVM 的 AUC?

python - 如何在 python 中为 postgresql 创建具有多个值的插入查询

python - 修改函数以在 Python 中使用列表理解

python - 使用列表理解来解决 Collat​​z 猜想

python - 将嵌套列表的字典转换为元组列表

python - 根据分隔符后的字符分割字符串 - python