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 に答える