Python:从值列表中提取值

时间:2015-06-30 02:34:25

标签: python arrays list

我试图编写一个消耗 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一次我提取的值。

3 个答案:

答案 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