我要开始的词典是:
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
答案 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')])
希望有帮助