Python键和值中的嵌套Dict

时间:2018-12-03 10:28:22

标签: python python-3.x dictionary

我收到了像这样的字典:

d {
  1: {
    a: 'aaa',
    b: 'bbb',
    c: 'ccc'
  }
  2: {
    d: 'dddd',
    a: 'abc',
    c: 'cca'
  }
  3: {
    e: 'eee',
    a: 'ababa',
    b: 'bebebe'
  }
}

我想按这样的字典进行转换

d {
  a: 1,2,3
  b: 1,3
  c: 1,2
  d: 2
  e: 3
}

我该如何实现?我尝试将其反转,但会抛出无法散列的字典。

2 个答案:

答案 0 :(得分:2)

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为:

defaultdict(<class 'list'>, {'a': [1, 2, 3], 'b': [1, 3], 'c': [1, 2], 'd': [2], 'e': [3]})

答案 1 :(得分:2)

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

class Train {
public:
    int a;

    Train(int a) : a(a) {}

    static Train addTrain() {
        Train t = Train(4);
        t.a = 2;
        return t;
    }

    void add(int num) {
        Train t = Train(num);
        this->a += t.a;
    }
}