Python元组没有填充

时间:2013-05-24 05:58:23

标签: python loops tuples

当我尝试在for循环中填充元组时,我必须在这里遗漏一些东西。

    ...more code above...
    colItems = objSWbemServices.ExecQuery(queryString)

#print type(colItems)

是否需要上述行?

# print the results
for item in colItems:
    logTuple = (item.SourceName, item.Type, item.TimeGenerated, item.Message)
logTuple.sort(sortByTime)
return logTuple

上面的代码会将这些字段输入元组吗?

下面是要排序的代码,但我还没有测试过。

def sortByTime(t1, t2):
        if t1[2] < t2[2]:
            return -1
        elif t1[2] > t2[2]:
            return 1
        else:
            return 0

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我不熟悉ExecQuery或你正在使用的结构,但我知道在你的for循环中,每次执行循环体时你都会重写logTuple。这应该可以解决问题:

logTuples = []
for item in colItems:
    logTuples.append( (item.SourceName, item.Type, item.TimeGenerated, item.Message) )
logTuples.sort(key=operator.itemgetter(2)) #credit: Thomas Jung
return logTuples

答案 1 :(得分:0)

你可能想要的是将元组添加到列表中(而不是将logTuple设置为for循环中最后创建的元组):

for item in colItems:
    log = (item.SourceName, item.Type, item.TimeGenerated, item.Message)
    logTuple.append(log)

排序可以通过以下方式完成:

logTuples.sort(key=operator.itemgetter(2))