我试图编写一个程序来获取字典,制作副本,然后交换副本中的值。但是,第一个字典的元素必须来自不同的功能。我已经知道如何交换所发现的键/值,但不知道如何将所有内容添加到原始词典中。有任何想法吗? (testReverse无法编辑。只能反向编辑。)
import copy
def reverse():
dict1 =
dict2 = dict1.copy()
dict2 = {y:x for x,y in dict.iteritems()}
def testReverse():
phoneBook = {'Doe, John': '123-1234', 'Parker, Mark': '987-9876'}
print reverse(phoneBook)
def main():
testReverse()
main()
答案 0 :(得分:4)
您需要接受输入字典作为函数参数,并且需要返回相反的结果:
def reverse(inputdict):
return {y:x for x,y in inputdict.iteritems()}
因为dict理解完全创建了一个 new 字典,所以只需要以上内容;不需要创建明确的副本。
演示:
>>> def reverse(inputdict):
... return {y: x for x, y in inputdict.iteritems()}
...
>>> def testReverse():
... phoneBook = {'Doe, John': '123-1234', 'Parker, Mark': '987-9876'}
... print reverse(phoneBook)
...
>>> testReverse()
{'123-1234': 'Doe, John', '987-9876': 'Parker, Mark'}
同样,这不触及原始词典:
>>> testdict = {'foo': 'bar'}
>>> reverse(testdict)
{'bar': 'foo'}
>>> testdict
{'foo': 'bar'}
答案 1 :(得分:0)
这是另一种方式:
def reverse(d):
return {d[k]:k for k in d}
另请注意,原始词典中的值必须唯一,否则您将丢失密钥&新词典中的值对。例如:
>>> a = {1:-1, 2:-2, 3:-3, 4:-1}
>>> reverse(a)
{-2: 2, -1: 4, -3: 3}