我收到了像这样的字典:
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
}
我该如何实现?我尝试将其反转,但会抛出无法散列的字典。
答案 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;
}
}