Python Dictionary交换键:值存在于多个键中时的值对[重复]
Posted
技术标签:
【中文标题】Python Dictionary交换键:值存在于多个键中时的值对[重复]【英文标题】:Python Dictionary swap Key:Value pair when Values exist in mutiple Keys [duplicate] 【发布时间】:2018-08-08 06:53:36 【问题描述】:我有一个字典,每个键中有多个值。 我想反转字典,以便可以将不同键中存在的所有值存储在 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:Values 必须是唯一的。在上述情况下,以下所有方法都失败了。
方法一:
my_dict2 = y:x for x,y in instr_dict.iteritems()
instr_json = json.dumps(new_dict)
print(instr_json)
方法二:
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)
有人可以帮助解决这个问题吗?
【问题讨论】:
看到这个答案:***.com/a/35491335/4014959 【参考方案1】:只需遍历字典即可。如果新键在字典中,则追加该值,否则使用该值创建一个列表。
这是工作代码。
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)
【讨论】:
以上是关于Python Dictionary交换键:值存在于多个键中时的值对[重复]的主要内容,如果未能解决你的问题,请参考以下文章