首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python键和值中的嵌套Dicts

Python键和值中的嵌套Dicts
EN

Stack Overflow用户
提问于 2018-12-03 10:28:22
回答 2查看 73关注 0票数 0

我有个混蛋,看起来是这样的:

代码语言:javascript
复制
d {
  1: {
    a: 'aaa',
    b: 'bbb',
    c: 'ccc'
  }
  2: {
    d: 'dddd',
    a: 'abc',
    c: 'cca'
  }
  3: {
    e: 'eee',
    a: 'ababa',
    b: 'bebebe'
  }
}

我想像这样转变成这样

代码语言:javascript
复制
d {
  a: 1,2,3
  b: 1,3
  c: 1,2
  d: 2
  e: 3
}

我怎样才能做到这一点呢?我试着逆转它,但它抛出了难以驾驭的碎片。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-03 10:37:23

代码语言:javascript
复制
a = {
    1: {
        "a": "aaa",
        "b": "bbb",
        "c": "ccc"
    },

    2: {
        "d": "ddd",
        "a": "abc",
        "c": "cca"
    },

    3: {
        "e": "eee",
        "a": "ababa",
        "b": "bebebe"
    }
}

from collections import defaultdict
b = defaultdict(list)
for i, v in a.items():
    for j in v:
        b[j].append(i)

结果b是:

代码语言:javascript
复制
defaultdict(<class 'list'>, {'a': [1, 2, 3], 'b': [1, 3], 'c': [1, 2], 'd': [2], 'e': [3]})
票数 2
EN

Stack Overflow用户

发布于 2018-12-03 10:41:52

你只需要弄清楚它的逻辑。遍历主字典,并使用子词典的键来构建新的字典。

代码语言:javascript
复制
d =  {
  1: {
    'a': 'aaa',
    'b': 'bbb',
    'c': 'ccc'
  },
  2: {
    'd': 'dddd',
    'a': 'abc',
    'c': 'cca'
  },
  3: {
    'e': 'eee',
    'a': 'ababa',
    'b': 'bebebe'
  }
}

newdict = {}
for k,v in d.items():
    for keys in v:
        newdict.setdefault(keys,[]).append(k)

print(newdict)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53591811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档