如何根据列表值对查询中的元组列表进行排序?

How to sort lists of tuples from a query according to the lists value?

我找不到关于如何从查询中对元组进行排序的明确示例。这是我的全部代码:

import nltk //http://www.nltk.org/
import pypyodbc

text = raw_input()
token = nltk.word_tokenize(text)
print(token)
tagged = nltk.pos_tag(token)
print(tagged)


class Database(object):
    def __init__(self):
        self.connected = False
        self.conn = None
        self.cur = None

    def connect(self):
        if not self.connected:
            self.conn = pypyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=Dictionary')
            self.connected = True
            self.cur = self.conn.cursor()

    def search(self, lists):
        if not self.connected:
            self.connect()
        for word in lists:
            self.cur.execute('SELECT Ybanag FROM Words WHERE English IN (%s)' % (",".join('?'*len(lists))), lists)
            result = self.cur.fetchall()
            return result

get = Database()
this = get.search(token)
print(this)

这段代码的输出是:(例如,我输入这句话:we all there)(我使用SQL服务器创建了数据库。Table名称:Words, 列: English, Ybanag, POST) 并在列中显示它们的相应值。)

['we', 'all', 'there'] //tokenize sentence
[('we', 'PRP'), ('all', 'DT'), ('there', 'RB')] //tokens and their POST(Part-Of-Speech Tag)
[('tore',), ('ngaming',), ('sittam',)] //their corresponding value in Ybanag from the dictionary 

其中toretherengamingallsittamwe,可以看到第3行顺序不是 ['we', 'all', 'there']。我的意思是,从查询中,如何根据第一行 ['we', 'all', 'there'] 的列表顺序对输出进行排序?我还想消除输出最后一行中的符号 [('',),]。该程序倾向于将输入的句子翻译成另一种语言,例如 Ybanag,菲律宾的一种母语。

您还需要 select SQL 中的英语单词,以便您的第 3 行是 (english,ybanag) 元组的列表。这样您就可以将其转换为字典并遍历输入列表中的每个单词,按顺序检索 Ybanag 等价物:

self.cur.execute('SELECT English,Ybanag FROM Words WHERE English IN (%s)' % (",".join('?'*len(lists))), lists)
resultDict=dict(self.cur.fetchall())
outList=[]
for word in lists:
    outList.append(resultDict[word])

这不能解决数据库中找不到单词的问题,如果您尝试转换包含许多单词的长句,它也不能很好地扩展。