亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創建將字母字符映射到數字的字典

創建將字母字符映射到數字的字典

蕪湖不蕪 2023-08-08 16:12:25
我想用Python編寫一段代碼,為每個字母字符分配一個數字,如下所示:a=0,b=1,c=2,...,y=24,z=25。我個人不喜歡為每個字母表設置條件,也不希望我的代碼看起來經過設計。我想知道如何以最短(即最短的代碼行)、最快和最簡單的方式做到這一點。(我的想法是為此目的創建一本字典,但我想知道是否有更簡潔更好的方法)。如有任何建議和提示,請提前表示感謝。
查看完整描述

4 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

您肯定需要一個字典來實現此目的,而不是將每個聲明為變量。一種簡單的方法是使用字典理解string.ascii_lowercaseas:


from string import ascii_lowercase


{v:k for k,v in enumerate(ascii_lowercase)}

# {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5...


查看完整回答
反對 回復 2023-08-08
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

這是我的兩分錢,for 循環將完成這項工作:


d = {} #empty dictionary


alpha = 'abcdefghijklmnopqrstuvwxyz'


for i in range(26):

    d[alpha[i]] = i #assigns the key value as alphabets and corresponding index value from alpha string as the value for the key


print(d) #instant verification that the dictionary has been created properly


查看完整回答
反對 回復 2023-08-08
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

帶有地圖和枚舉的一行:


# given

foo = 'abcxyz'

dict(enumerate(foo))


# returns: {0: 'a', 1: 'b', 2: 'c', 3: 'x', 4: 'y', 5: 'z'}

如果你需要用字符作為字典鍵,我想到的要么是字典理解......


{letter:num for (num,letter) in enumerate(foo) }


# returns {'a': 0, 'b': 1, 'c': 2, 'z': 3, 'y': 4, 'x': 5}

...或 lambda...


dict( map(lambda x: (x[1],x[0]), enumerate(foo)) )


# returns {'a': 0, 'b': 1, 'c': 2, 'z': 3, 'y': 4, 'x': 5}

我覺得 dict 理解比 map+lambda+enumerate更具可讀性。


查看完整回答
反對 回復 2023-08-08
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

已經有與字符相關聯的數字。您可以將這些代碼點與ord()一起使用。

一個簡短的(就行而言)解決方案是:


num_of = lambda s: ord(s) - 97

一個普通的函數會更容易閱讀:


def num_of(s):

    return ord(s) - 97

用法:


num_of("a") # 0

num_of("z") # 25

如果它必須是字典,您可以在不導入的情況下創建它,如下所示:


{chr(n):n-97 for n in range(ord("a"), ord("z")+1)}


查看完整回答
反對 回復 2023-08-08
  • 4 回答
  • 0 關注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號