【问题标题】:how do i change the value of a dictionary based off of an input?如何根据输入更改字典的值?
【发布时间】:2021-02-28 06:55:13
【问题描述】:

这里是初学者程序员,我很抱歉- 这就是我想要做的(插件板是一本字典):

for x in plugboard:
 
    plugboard[x] = plugboard[x+1]

然后打印新版本的插件板。所以,我试图将字典中每个键的值更改为它之后的键的值,但我不知道该怎么做。有什么帮助吗?

(编辑)

plugboard = {
    'a':'a',
    'b':'b',
    'c':'c',
    'd':'d',
    'e':'e',
    'f':'f',
    'g':'g',
    'h':'h',
    'i':'i',
    'j':'j',
    'k':'k',
    'l':'l',
    'm':'m',
    'n':'n',
    'o':'o',
    'p':'p',
    'q':'q',
    'r':'r',
    's':'s',
    't':'t',
    'u':'u',
    'v':'v',
    'w':'w',
    'x':'x',
    'y':'y',
    'z':'z'
  }
  for x in plugboard:
    plugboard[x] = plugboard[x+1]
  print(plugboard) 

这实际上是整个程序——当然它是一个更大项目的一部分,但这是我遇到的最大问题。

【问题讨论】:

  • x+1 不在字典中的最后一个应该发生什么? x 是整数吗?
  • 向我们展示plugboard 的内容并解释您要做什么。
  • 你运行的是哪个版本的 Python?
  • 'a' + 1 没有任何意义——如果你在火车上走到一个陌生人面前问,“一加 c 是多少?”,他们会认为你疯了。 Python 也认为你疯了。您需要将这些字母转换为带有ord() 之类的数字,然后您仍然需要决定如何处理z。也许与% 模数运算符有关。尝试在网站上搜索 [python] ceasar cypher 以获取一些想法。
  • 这是一个非常好的主意,我绝对没有想到 - 我会尝试并解决任何问题,非常感谢

标签: python dictionary for-loop key-value


【解决方案1】:

x+1 将引发TypeError,因为x(字符串)和1(整数)不能相互连接。但是还有其他方法可以做到这一点,例如使用彼此相反的 ord(c)chr(i)

这是实现它的一种方式:

def char_after(char):
    if char == 'z': return 'a'
    return chr(ord(char)+1)

for x in plugboard:
    plugboard[x] = char_after(plugboard[x])

【讨论】:

    猜你喜欢
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    相关资源
    最近更新 更多