从另一个功能设置字典?

时间:2013-09-02 19:20:52

标签: python function python-2.7 dictionary

我试图编写一个程序来获取字典,制作副本,然后交换副本中的值。但是,第一个字典的元素必须来自不同的功能。我已经知道如何交换所发现的键/值,但不知道如何将所有内容添加到原始词典中。有任何想法吗? (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()

2 个答案:

答案 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}