首页 > 解决方案 > 将字母与Python中列表中的相应数字匹配

问题描述

我正在研究制作一个程序,当用户输入名称作为参数时,它会将每个字母与存储在列表中的相应数字匹配。

例如:

def nameNumbers(name):
    alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25, 
  'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97, 
  'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75, 
  'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33, 
  'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15, 
  'Yy', 1.97, 'Zz', 0.07]

因此,如果我要传入“Adam”,它将返回:

8.17
4.25
8.17
2.41

谢谢!

标签: pythonlist

解决方案


使用以字母字符为键的字典作为整数的值

def nameNumbers(name):
    alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25, 
  'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97, 
  'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75, 
  'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33, 
  'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15, 
  'Yy', 1.97, 'Zz', 0.07]
    dic = { alphabetList[i][1]: alphabetList[i+1] for i in range(0,len(alphabetList),2)}

    for i in name:
        print(dic[i.lower()])

nameNumbers('adam')

或者您需要找到每个字符的索引,在您的列表中每个字符都是大写字母 + 小写字母 ie Aaor Bb,然后使用 list.index 查找索引位置并访问列表中该索引的下一个元素

def nameNumbers(name):
    alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25, 
      'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97, 
      'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75, 
      'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33, 
      'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15, 
      'Yy', 1.97, 'Zz', 0.07]

    for alphabet in name:
        to_find = "{}{}".format(alphabet.upper(), alphabet.lower())
        print(alphabetList[alphabetList.index(to_find)+1])

nameNumbers('adam')

推荐阅读