Python:从值列表中提取值

2024-10-01 11:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个函数,它使用一个keycode值列表,并生成一个与这些值对应的字符串。每个keycode包含两个值,第一个值对应于电话号码,第二个值对应于定义每个号码的值列表中的某个值。我无法提取这些值。 这是与每个数字对应的值列表:

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)并映射一次,以便提取值。


Tags: 函数字符串列表定义电话号码数字按键list
3条回答

尝试使用列表列表,如下所示:

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"

注意,索引从zero开始,所以我必须从问题中给出的示例按键中减去一个单位。

我建议您定义一个保存数字和相应值的字典,如下所示:

keyvalmap = {0: [" "], 1: [".", ",", "?"]} #and so on...

然后在按键上迭代:

for key, times in keypresses:
    print keyvalmal[key][times-1] # or whatever you want to do

这应该符合你的要求。

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

相关问题 更多 >