【问题标题】:How do I assign keys to every character in a string?如何为字符串中的每个字符分配键?
【发布时间】:2017-04-05 16:02:42
【问题描述】:

这就是我被告知要做的,“编写一个 python grogram 询问用户一个字符串,然后创建以下字典:值是字符串中的字母,对应的键是字符串中的位置. 例如,如果用户输入字符串“CSC120”,则创建字典 D。 D = {‘C’:0, ‘S’:1, ‘C’:2, ‘1’:3, ‘2’:4, ‘0’:5 }"

这是我目前的代码:

usr = input('enter string here')
result = ''
for ch in usr:
    result = result + ch + ' '
print(result[:-1]) #value

key = 0
while (key < len(usr)):
    key = key +1    #key
print(key)

dict = {key: result}
print(dict)

这是输出: 在此处输入字符串 csc120

c s c 1 2 0

6

{6: 'c s c 1 2 0 }

这是来自在线教程,所以我真的不能向教授寻求帮助,而且我是 python / 编程的新手,感谢我能得到的所有帮助!

我只是不明白如何将键分配给字符串中的每个字符,使其看起来像这样: D = {'C':0, 'S':1 等等...}

【问题讨论】:

  • 我不知道谁给你这个任务,但是字典D = {‘C’:0, ‘S’:1, ‘C’:2, ‘1’:3, ‘2’:4, ‘0’:5 }不能在python中存在,因为键C是重复的——而且字典不能有重复的键...跨度>
  • 您拥有的示例字典使用值作为键,位置作为值。你需要扭转它
  • 解释和例子是矛盾的。随着解释,一个简单的答案是dict(enumerate(usr))

标签: python string dictionary


【解决方案1】:

您可以使用 enumerate() 使用索引遍历每个字母,然后从中创建一个字典:

In [1]: s = "CSC120"
In [2]: dict(enumerate(s))
Out[2]: {0: 'C', 1: 'S', 2: 'C', 3: '1', 4: '2', 5: '0'}

(这是一个字典,其中的值是字符串中的字母,对应的键是字符串中的位置 - 您的示例正好相反)

【讨论】:

  • 使用生成器表达式可能比使用列表推导式更有效。
猜你喜欢
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 2015-12-25
  • 2019-05-01
  • 1970-01-01
相关资源
最近更新 更多