如何检查输入是否在数组中并打印另一个数组的对应元素?

时间:2019-06-19 21:56:54

标签: python

如果我要创建一个“翻译器”,并且为每个字母分配一个世界(例如cat = a,dog = b ...),我是否可以制作2个数组,其中每个字母的“翻译”例如,第一个数组对应于字母本身在另一个数组中具有相同位置的元素

array_1 = ["a", "b"]
array_2 = ["cat", "dog"]

def translation(phrase):
     translation = ""
     for letter in phrase:
     if letter in array_1:
          translation += #the element of array_2 in the same position of the element of array_1 witch is equal to letter

     return translation

print(translation(input()))

3 个答案:

答案 0 :(得分:1)

可以使用两个列表。但是,更好的解决方案是使用字典值。这样,您只需输入一个键(输入字),然后为其提供要转换的值。您可以使用:

dictionary = { 'a': 'cat', 'b' : 'dog'}

,并且可以轻松地以input : output的形式添加更多翻译,以更轻松地查看每个输入所翻译的内容。然后翻译单词的方法是,对于每个输入,键入

dictionary[input]

,您将获得正确的输出。例如,在此示例中,dictionary['a']将返回'cat'。这样可以节省时间,计算每个键和输出在每个列表中的位置,以确保它们匹配。

要连续翻译多个字符,请使用以下命令:

dictionary = { 'a': 'cat', 'b' : 'dog'}
undecoded="abbabaa"
decoded=""
for i in undecoded:
    decoded=decoded+dictionary[i]
print(decoded)

希望这会有所帮助! -西奥

编辑:如juanpa.arrivillaga所述,如果您已经有两个要转换成字典形式的列表,则可以使用dictionary=dict(zip(array_1, array_2))

答案 1 :(得分:1)

您可以使用list.index()函数来找到正确的索引:

array_1 = ["a", "b"]
array_2 = ["cat", "dog"]

phrase = 'acba'

def translation(phrase):
    for letter in phrase:
        yield array_2[array_1.index(letter)] if letter in array_1 else None

for t in translation(phrase):
    if t:
        print(t)
    else:
        print('NOT FOUND')

打印:

cat
NOT FOUND
dog
cat

编辑:将短语连接到一个字符串,例如:

final_string = ''.join(t if t is not None else '' for t in translation(phrase))
print(final_string)

打印:

catdogcat

答案 2 :(得分:0)

只需做出如下命令即可:

d = {array_1[n] :array_2[n] for n in range(len(array_1))}