我有一本字典,每个键都有多个值。我想反转字典,以便在值中存储不同键中的所有值:键对(请记住,一个值可以存在于多个键上)。
样本数据:
{
"1A": [
"mathematics"
],
"1B": [
"problem-solving",
"model"
],
"1C": [
"basic",
"model"
]
}产出:
{
"mathematics": [
"1A"
],
"problem-solving": [
"1B"
],
"model" : [
"1B" ,
"1C"
],
"basic": [
"1C",
]
}正如您所看到的,模型现在有两个值1B & 1C。
我尝试过不同的方法,但似乎都认为这是关键:价值观必须是独一无二的。下面的所有方法在上述情况下都失败了。
办法-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)有人能帮助找到正确的方法来解决这个问题吗?
发布于 2018-08-08 07:02:05
只要翻一下字典就行了。如果新键在字典中,则追加该值,否则将创建一个具有该值的列表。
这是工作代码。
newDict = {}
for key,value in instr_dict.items():
for val in value:
if val in newDict:
newDict[val].append(key)
else:
newDict[val] = [key]
print(newDict)https://stackoverflow.com/questions/51740270
复制相似问题