繁体   English   中英

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

[英]How to check if input is in a array and print the corresponding element of another array?

如果我要创建一个“翻译器”,并且为每个字母分配一个世界(例如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()))

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

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))

您可以使用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

像这样写一个字典:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM