python:如何为字母赋值?

发布于 2024-09-09 06:00:19 字数 198 浏览 4 评论 0原文

我想为字母表中的每个字母分配一个值,以便 -> 1、b-> 2、c-> 3、...z-> 26. 类似于返回字母值的函数,例如:

value('a') = 1

value('b') = 2

等。 ?

我将如何在 python 中做到这一点

I want to assign a value to each letter in the alphabet, so that a -> 1, b -> 2, c -> 3, ... z -> 26. Something like a function which returns the value of the letter, for example:

value('a') = 1

value('b') = 2

etc...

How would I go about doing this in python?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

月牙弯弯 2024-09-16 06:00:20

使用 字典 作为键:值对。尽管对于像这样的简单映射,可能有一些巧妙的方法可以做到这一点。

Use a dictionary for key:value pairs. Although for a simple mapping like this there are probably some clever ways of doing this.

紧拥背影 2024-09-16 06:00:20
from itertools import count
from string import lowercase
value = dict(zip(lowercase, count(1))).get
from itertools import count
from string import lowercase
value = dict(zip(lowercase, count(1))).get
夏有森光若流苏 2024-09-16 06:00:20

不需要导入库。你可以使用这个:

value = dict(zip("abcdefghijklmnopqrstuvwxyz", range(1,27)))

It's not necessary to import a library. You can use this:

value = dict(zip("abcdefghijklmnopqrstuvwxyz", range(1,27)))
故事↓在人 2024-09-16 06:00:20

您应该利用“a”、“b”等后面有 ASCII 值的事实。

ord('a') # this returns int 97
ord('b') # this returns int 98

因此,你可以这样做:

ord(letter) - ord('a') + 1 # e.g., a: 97 - 97 + 1 = 1

You should exploit the fact that 'a', 'b', etc. have ASCII values behind them.

ord('a') # this returns int 97
ord('b') # this returns int 98

Therefore, you could do something like:

ord(letter) - ord('a') + 1 # e.g., a: 97 - 97 + 1 = 1
初雪 2024-09-16 06:00:20

为什么不直接列出字母表中的每个字母,然后使用索引值作为返回值

Why not just make a list of each letter in the alphabet and then use the index values as the return value

初见你 2024-09-16 06:00:20

这个怎么样?

import string
value = lambda x: string.ascii_lowercase.index(x) + 1

In [1]: value("a")
Out[1]: 1

How about this?

import string
value = lambda x: string.ascii_lowercase.index(x) + 1

In [1]: value("a")
Out[1]: 1
挽手叙旧 2024-09-16 06:00:20

您可以使用 ord 内置函数。这个功能很好地满足您的需求

def letter_value(letter):
    return ord(letter) - ord("a") + 1

You can use ord built-in function. This function well do what you are looking for

def letter_value(letter):
    return ord(letter) - ord("a") + 1
岁月染过的梦 2024-09-16 06:00:19

你想要一个原生的 python 字典。

(您可能还希望您的值从“0”开始,而不是从“1”开始,这样您就可以避免在所有映射上添加+1,如下所示)

用此构建一个:

import string
values = dict()
for index, letter in enumerate(string.ascii_lowercase):
   values[letter] = index + 1

这会给您带来以下结果:

print values["a"]
-> 1

当然,您可能可以使用“ord”内置函数并完全跳过此字典,如其他答案中所示:

print ord("c") - (ord("a")) + 1

或者在 python 3.x 或 2.7 中,您可以使用字典生成器表达式在一次传递中创建字典:

values = {chr(i): i + 1 for i in range(ord("a"), ord("a") + 26)}

You want a native python dictionary.

(and you probably also want your values to start from"0" not from "1" , so you can void adding a +1 on all your mappings, as bellow)

Build one with this:

import string
values = dict()
for index, letter in enumerate(string.ascii_lowercase):
   values[letter] = index + 1

This give syou things like:

print values["a"]
-> 1

Of course, you probably could use the "ord" built-in function and skip this dictionary altogether, as in the other answers:

print ord("c") - (ord("a")) + 1

Or in python 3.x or 2.7, you can create the dicionary in a single pass with a dict generator expression:

values = {chr(i): i + 1 for i in range(ord("a"), ord("a") + 26)}
久隐师 2024-09-16 06:00:19

如果您只想将 ASCII 字母表的字符映射到数字,您可以使用 ord() 然后调整结果:

>>> ord('a') - 96
1

如果您希望这也适用于大写字母:

>>> ord('A'.lower()) - 96
1

另外,您可能想要验证参数确实是单个 ASCII 字符:

>>> char = 'a'
>>> len(char) == 1 and char.isalpha() and 'a' <= char <= 'z'
True

或者:

>>> import string
>>> len(char) == 1 and char in string.ascii_lowercase
True

If you just want to map characters of the ASCII alphabet to numbers, you can use ord() and then adjust the result:

>>> ord('a') - 96
1

If you want this to work for uppercase letters too:

>>> ord('A'.lower()) - 96
1

Also, you might want to validate that the argument is indeed a single ASCII character:

>>> char = 'a'
>>> len(char) == 1 and char.isalpha() and 'a' <= char <= 'z'
True

Or:

>>> import string
>>> len(char) == 1 and char in string.ascii_lowercase
True
猫卆 2024-09-16 06:00:19
def value(letter):
    return ord(letter) - ord('a') + 1
def value(letter):
    return ord(letter) - ord('a') + 1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文