这是我的代码:
my_dict = {'Anthony Hopkins': ' Hannibal, The Edge, Meet Joe Black, Proof', 'Julia Roberts': ' Pretty Woman, Oceans Eleven, Runaway Bride', 'Salma Hayek': ' Desperado, Wild Wild West', 'Gwyneth Paltrow': ' Shakespeare in Love, Bounce, Proof', 'Meg Ryan': ' You have got mail, Sleepless in Seattle', 'Russell Crowe': ' Gladiator, A Beautiful Mind, Cinderella Man, American Gangster' .....}
dictrev={}
for i in mydict:
for j in mydict[i] :
if j not in dictrev:
dictrev.setdefault(j, []).append(i)
print (dictrev)
问题在于,当我调试时,我看到程序只读取一个字符值(此行for j in mydict[i] :
,我需要第一个值(有多个值)。
有什么建议是什么问题 非常感谢你的帮助
答案 0 :(得分:0)
请你这样格式化你的代码:
do whatever
您可以通过输入两次输入,然后为每行代码缩进四个空格来完成此操作。要在此之后正常输入,请开始一个新行,不要在它的开头键入四个空格。
如果我理解你的要求,你想要交换字典的键和值,这样做会出错。我无法阅读你的无格式代码(没有冒犯),所以我将提供一个适合我的字典交换技术。
my_dict = {1: "bob", 2: "bill", 3: "rob"}
new_dict = {}
for key in my_dict:
new_key = my_dict[key]
new_value = key
new_dict.update({new_key:new_value})
print(new_dict)
此代码的工作原理是使原始字典my_dict
和未完成的反向字典new_dict
。它遍历my_dict
,它只提供密钥,并使用该密钥找到值。我们希望成为密钥的值已分配给new_key
,而我们希望成为值的密钥将分配给new_value
。然后它使用新的键/值更新反向字典。最后一行打印出新的反向字典。如果要将my_dict
设置为反转字典,请使用my_dict = new_dict
。我希望这能回答你的问题。
答案 1 :(得分:0)
正如评论中指出的那样,dict
中的值是字符串,因此迭代它们将产生单个字符。将它们拆分成所需的标记,它将起作用:
dictrev={} # movie: actors-list (I assume)
for k in mydict:
for v in mydict[k].split(', '): # iterate through the comma-separated titles
dictrev.setdefault(v, []).append(k)
答案 2 :(得分:0)
如果您想要的是与您的字典值相反(以逗号分隔),则以下可能是您正在寻找的解决方案:
my_dict = {
'Anthony Hopkins': ' Hannibal, The Edge, Meet Joe Black, Proof',
'Julia Roberts' : ' Pretty Woman, Oceans Eleven, Runaway Bride'
}
res_dict {}
for item in my_dict:
res_dict[item] = ', '.join(reversed(my_dict[item].strip().split(','))).strip()
strip()
用于删除每个值的开头/结尾的空格
split()
用于拆分值(使用,
分隔符)
reversed()
用于撤销结果列表
join()
用于形成res_dict
<强>输出:强>
>>> res_dict
{'Anthony Hopkins': 'Proof, Meet Joe Black, The Edge, Hannibal', 'Julia Roberts': 'Runaway Bride, Oceans Eleven, Pretty Woman'}