转移字典值并交换它们,但不能随机交换

时间:2019-04-03 17:15:48

标签: python dictionary key

我要开始的词典是:

s={'A' : 'A', 'B' : 'B', 'C' : 'C'} 

我要结束的字典是:

{'A' : 'B', 'B' : 'C', 'C' : 'A'}.

我唯一知道的是如何获取随机字母,而不是我在某个特定位置的字母,但是在这个问题中,我必须将键的值移动n=1

我尝试定义n来改变值,但最终出现错误。

import string
dictionary = dict.fromkeys(string.ascii_lowercase, 0)

def shift(dictionary,s)
    s2=' '
    for c in s:
          n=ord(c) - 65
          n=+=1
          n%=26
          s2+=chr(n+65)
    return s2

2 个答案:

答案 0 :(得分:2)

如果您使用的是Python 3.6+,请尝试以下方法:

from collections import deque
s={'A' : 'A', 'B' : 'B', 'C' : 'C'}
rotated_values = deque(s.values())
rotated_values.rotate(-1)
new_s = {k:v for k,v in zip(s, rotated_values)}

输出

{'A': 'B', 'B': 'C', 'C': 'A'}

答案 1 :(得分:0)

您应该使用OrderedDict来确保字典在迭代时保留其顺序。

from collections import OrderedDict
input_dictionary = OrderedDict(A="A", B="B", C="C")
values = list(input_dictionary.values())
for index, key in enumerate(iter(input_dictionary.keys())):
    new_value_index = (index + 1) % len(values)
    input_dictionary[key] = values[new_value_index]
print(input_dictionary)

哪个给您OrderedDict([('A','B'),('B','C'),('C','A')])

希望有帮助