【发布时间】:2018-04-23 07:04:34
【问题描述】:
我正在尝试反转以下字典:
{'Jane Frank': ['Parent Teacher Association'], 'Paul Young': ['Chess
Club'], 'Zhou Jo': ['McKinsey'], 'Alex Cube': ['Chess Club',
'Saxophone'], 'Cam Paulson': ['Cooking School', 'Harry Potter Fan
Club'], 'Philip O'Donnel': ['Investment Banking Association'], 'Matt
Damon': ['Parent Teacher Association']}
这就是倒排字典的样子:
{'Parent Teacher Association': ['Jane Frank', 'Matt Damon'], 'Chess
Club': ['Paul Young', 'Alex Cube'], 'McKinsey': ['Zhou Jo'],
'Saxophone': ['Alex Cube'], 'Cooking School':['Cam Paulson']...**etc**
到目前为止,我有以下代码:
new_dictionary = {}
for value in old_dict:
new_entry = tuple(old_dict[value])
if not (new_entry in new_dictionary):
new_dictionary[new_entry] = [value]
else:
new_dictionary[new_entry].append(value)
return new_dictionary
此代码有效,但它返回一个字典,其中键是元组,其中一个键由两个元素组成。输出示例如下:
{('Parent Teacher Association',): ['Jane Frank', 'Matt Damon'], ('Chess
Club',): ['Paul Young'], ('McKinsey',): ['Zhou Jo'], ('Chess Club',
'Saxophone'): ['Alex Cube'], ('Cooking School', 'Harry Potter Fan
Club'): ['Cam Paulson'], ('Investment Banking Association',): ['Philip
O'Donnel']}
这个输出的问题是每个初始值都应该是新字典中的一个单独的键,即 Cooking School 应该是一个键,而 Harry Potter Fan Club 应该是一个键。此外,键应该只是字符串而不是元组。我正在尝试不同的东西,并且会随着我的进步不断更新。我希望我说得有道理。请帮忙。 :)
【问题讨论】:
-
你在哪一行得到错误?
-
这是我收到错误的行:如果不是(new_dictionary 中的 new_entry):
-
new_entry是一个列表。在第 5 行new_dictionary[new_entry] = [value]您试图将其用作字典中的键。列表是不可散列的,不能用作字典中的键。 -
@AbbyLiu 编辑并取消删除了我的答案。 stackoverflow.com/a/47216254/4909087
标签: python dictionary