Python 3.x 反转if语句中的元组列表

Python 3.x 反转if语句中的元组列表,python-3.x,Python 3.x,我有两个字符串,如下所示: string = '''māori,english Aotearoa,New Zealand Te Ika-a-Māui,North Island Te Waipounamu,South Island''' 以及: 第一行是说明翻译顺序的标题,即英语、毛利语或毛利语、英语。下面是1到n行,每行用逗号分隔两个单词 我必须把它打印成元组列表。元组的第一个元素是英语术语,第二个是毛利人术语 我目前的代码是: def get_translations(string):

我有两个字符串,如下所示:

string = '''māori,english
Aotearoa,New Zealand
Te Ika-a-Māui,North Island
Te Waipounamu,South Island'''
以及:

第一行是说明翻译顺序的标题,即英语、毛利语或毛利语、英语。下面是1到n行,每行用逗号分隔两个单词

我必须把它打印成元组列表。元组的第一个元素是英语术语,第二个是毛利人术语

我目前的代码是:

def get_translations(string):
    """stuff"""
    list1 = []
    lines = string.splitlines()
    for seperate_words in lines:
        list1.append(tuple(seperate_words.split(",")))
    return list1[1:]
这适用于第二个字符串,但不适用于第一个字符串,因为它不会反转元组。使用if语句,我如何将单词反转为英语,然后是毛利语

我尝试过这样做,但无法使用list1[::-1]这样做,因为它会向后打印

此外,如果标题包含英语和毛利语以外的语言,则我需要打印

"Header language not recognized!"
测试是

for terms in get_translations(string):
print(terms)

如果您有任何关于如何撤销此列表的帮助,我将不胜感激。

如果我了解您想要做的事情,类似的方法应该可以奏效:

def get_translations(string):
    """stuff"""
    list1 = []
    lines = string.splitlines()
    order = 1 if string.split(',')[0] == "english" else -1
    for seperate_words in lines:
        list1.append(tuple(seperate_words.split(",")[::order]))
    return list1[1:]

这很有效,谢谢。我现在想知道,如果标题包含英语和毛利语,而不是其他语言,我如何才能让这段代码只返回list1。例如,如果标题包含意大利语,如何让程序打印“标题语言未识别!”。我尝试过使用if语句,但没有成功。我尝试过这样做:if string.split(',')[0]!=“毛利人”或“英语”:打印(“标题语言不可识别!”)尝试打印表达式的求值,以查看它失败的原因
print(string.split(',')[0]!=“毛利人”或“英语”)
。如果我的回答帮助你解决了问题,请将问题标记为已解决。对不起,我无法理解。如果其中一种语言不是毛利语或英语,我需要打印“标题语言未识别!”,但目前我只能在第一种语言未识别的情况下打印。如果第二种语言不被识别,它仍然返回列表1,因为它只会脱离第一种语言。请看一看。如果您的当前语法为“english”,
string.split(“,”)[0]!=“毛利人”
的计算结果为
True
True或“英语”
的计算结果为
True
。但是,如果第一语言是“毛利语”,则
string.split(',')[0]!=“毛利人”
计算为
False
False或“english”
计算为“english”。
def get_translations(string):
    """stuff"""
    list1 = []
    lines = string.splitlines()
    order = 1 if string.split(',')[0] == "english" else -1
    for seperate_words in lines:
        list1.append(tuple(seperate_words.split(",")[::order]))
    return list1[1:]