0

我正在尝试编写一个程序,该程序需要一个字典,制作一个副本,然后将键交换为副本中的值。但是,第一个字典的元素必须来自不同的函数。我已经知道如何交换已确定的键/值,但不知道如何将所有内容添加到原始字典中。有任何想法吗?(testReverse 不能编辑。只有 reverse 可以。)

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()
4

2 回答 2

4

您需要接受输入字典作为函数参数,并且需要返回反转结果:

def reverse(inputdict):
    return {y:x for x,y in inputdict.iteritems()}

因为 dict 理解完全创建了一个字典,所以以上就是所需要的;不需要创建显式副本。

演示:

>>> 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'}
于 2013-09-02T19:28:23.070 回答
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}
于 2013-09-02T19:58:15.337 回答