我试图编写一个消耗 keycode 值列表的函数,并生成一个与这些值对应的字符串。每个键码包含2个值,第一个对应于电话号码,第二个值对应于定义每个号码的值列表中的特定值。我无法提取这些值。 这是与每个数字对应的值列表:
0 == [" "]
1 == [".", ",", "?"]
2 == ["a", "b", "c"]
3 == ["d", "e", "f"]
4 == ["g", "h", "i"]
5 == ["j", "k", "l"]
6 == ["m", "n", "o"]
7 == ["p", "q", "r", "s"]
8 == ["t", "u", "v"]
9 == ["w", "x", "y", "z"]`
如果我消耗的键控值列表是 按键:[[6,3],[0,1],[5,2]] 如何从上面的定义中提取某些值? 我正在考虑使用.join(list)和map一次我提取的值。
答案 0 :(得分:1)
尝试使用列表列表,如下所示:
lsts = [[" "],
[".", ",", "?"],
["a", "b", "c"],
["d", "e", "f"],
["g", "h", "i"],
["j", "k", "l"],
["m", "n", "o"],
["p", "q", "r", "s"],
["t", "u", "v"],
["w", "x", "y", "z"]]
现在您可以按索引访问每个子列表:
lsts[1]
=> [".", ",", "?"]
每个元素及其两个索引:
lsts[1][2]
=> "?"
现在很容易从按键列表中提取值,如问题中显示的那些,然后加入它们:
keypresses = [[6, 3], [0, 1], [5, 2]]
''.join(lsts[i][j-1] for i, j in keypresses)
=> "n k"
请注意,索引从零开始,因此我不得不从问题中给出的样本按键中减去一个单位。
答案 1 :(得分:1)
这应该是你想要的。
def key_pressed(key, character):
"""
:param key: index of keyboard button
:param character: desired character represented by key
:return: requested character
"""
lookup = [[" "],
[".", ",", "?"],
["a", "b", "c"],
["d", "e", "f"],
["g", "h", "i"],
["j", "k", "l"],
["m", "n", "o"],
["p", "q", "r", "s"],
["t", "u", "v"],
["w", "x", "y", "z"]]
return lookup[key][character]
print(key_pressed(6, 2))
print(key_pressed(1, 2))
print(key_pressed(5, 1))
输出:
o
?
k
答案 2 :(得分:0)
我建议您定义一个包含数字和相应值的字典,如下所示:
keyvalmap = {0: [" "], 1: [".", ",", "?"]} #and so on...
然后迭代按键:
for key, times in keypresses:
print keyvalmal[key][times-1] # or whatever you want to do