当多个键中存在值时,Python字典交换键:值对

时间:2018-08-08 06:53:37

标签: python python-3.x dictionary key-value compare-and-swap

我有一个字典,每个键中都有多个值。 我想反转字典,以便可以将不同键中存在的所有值存储在 Value:Keys 对中(请记住,一个值可以存在于多个键中)。

样本数据:

{
  "1A": [
    "mathematics"
  ],
  "1B": [
    "problem-solving",
    "model"
  ],
  "1C": [
    "basic",
    "model"
  ]
}

输出:

{
  "mathematics": [
    "1A"
  ],
  "problem-solving": [
    "1B"
  ],
  "model" : [
    "1B" ,
    "1C"
  ],
  "basic": [
    "1C",
  ]
}

如您所见,MODEL现在有2个值1B和1C。

我尝试了不同的方法,但是所有人似乎都认为Key:Value必须是唯一的。以下所有方法均无法满足上述情况。

方法1:

my_dict2 = {y:x for x,y in instr_dict.iteritems()}
instr_json =  json.dumps(new_dict)
print(instr_json)

方法2:

my_dict2 = dict((y,x) for x,y in instr_dict.items())
instr_json =  json.dumps(new_dict)
print(instr_json)

方法3:

b = dict()
for k, v in instr_dict.items(): # a.iteritems() in python 2
    b[v] = k
    del instr_dict[k]
a = b
print(a)

有人可以提供正确的方法来解决此问题吗?

1 个答案:

答案 0 :(得分:2)

只需在字典上循环即可。如果新键在字典中,请附加值,否则用该值创建一个列表。

这是工作代码。

ViewSwitcher