首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >匹配元组列表的Python语句-移除重复项。

匹配元组列表的Python语句-移除重复项。
EN

Stack Overflow用户
提问于 2013-11-15 00:12:56
回答 1查看 430关注 0票数 0

我试图以10秒的间隔从MySQL数据库中提取数据。由于每秒输入的数据量是可变的,所以我计划每10秒提取最近的50行数据。我的第一个函数运行良好,并适当地提取数据。

我的第二个函数应该是从以前的拉中删除重复的,只将uniques推到新变量上,但是我遇到了一个错误,并且不知道如何修复它。对于我的if语句来说,我不允许匹配每个元组的所有元素。我不太确定该怎么改变这一切。

代码语言:javascript
运行
复制
import mysql.connector
import datetime
import requests
from operator import itemgetter
import time

run = True

def sqlPull():
    connection = mysql.connector.connect(user='XXXX', password='XXXXX', host='XXXXXX', database='MeshliumDB')
    cursor = connection.cursor()
    cursor.execute("SELECT TimeStamp, MAC, RSSI FROM wifiscan ORDER BY TimeStamp DESC LIMIT 50;")
    data = cursor.fetchall()
    connection.close()
    time.sleep(10)

数据输出如下所示:

代码语言:javascript
运行
复制
[(104346, datetime.datetime(2013, 11, 14, 17, 43, 20), u'00:1E:4C:03:C0:66', u' 16'), (104345, datetime.datetime(2013, 11, 14, 17, 43, 20), u'00:1E:4C:03:C0:66', u' 16'), (104344, datetime.datetime(2013, 11, 14, 17, 43, 19), u'00:26:AB:BB:FB:B8', u' 17'), (104343, datetime.datetime(2013, 11, 14, 17, 43, 18), u'8C:2D:AA:42:0E:67', u' 17'), (104342, datetime.datetime(2013, 11, 14, 17, 43, 17), u'E4:CE:8F:3F:36:E0', u' 13'), (104341, datetime.datetime(2013, 11, 14, 17, 43, 16), u'00:1E:8F:75:82:35', u' 9'), (104340, datetime.datetime(2013, 11, 14, 17, 43, 16), u'00:1E:8F:75:82:35', u' 9'), (104339, datetime.datetime(2013, 11, 14, 17, 43, 15), u'74:44:01:31:D9:E2', u' 9'), (104338, datetime.datetime(2013, 11, 14, 17, 43, 19), u'84:38:35:5E:F8:BA', u' 8'), (104337, datetime.datetime(2013, 11, 14, 17, 43, 15), u'00:26:08:E2:38:F9', u' 8')]




def dupCatch():
    lastPull = []
    for TimeStamp, MAC, RSSI in data:
        if TimeStamp, MAC, RSSI not in lastPull
            data = newData
            else
            lastPull = data

while run == True:
    sqlPull()
    dupCatch()
    print newData



  File "<ipython-input-1-6d9d5eb980c9>", line 20
    if TimeStamp, MAC, RSSI not in lastPull
                ^
SyntaxError: invalid syntax
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-15 00:42:05

这最初是一个评论,但似乎很有帮助,所以我重新发布它作为一个答案:

逗号语法告诉python创建一个元组,是的。这就是为什么以下两种行为是相同的:

代码语言:javascript
运行
复制
L = [1, 2, 3]
a, b, c = L

代码语言:javascript
运行
复制
L = [1, 2, 3]
(a, b, c) = L

但是,我怀疑这并不总是适用的,例如在if语句或循环中表示条件的情况下。这可能表明这些表达式不是python语法本身的一部分;但不必担心,因为语法可以在源代码中进行编辑(我知道这是可能的,但目前引用不了我),随后可以编译成您自己的python风格。

但是,目前您希望强制将这些变量收集到一个元组中,以便您可以检查该元组在集合中是否存在。为此,请尝试如下:

代码语言:javascript
运行
复制
if (TimeStamp, MAC, RSSI) not in lastPull:
  # do stuff

编辑:我检查了语法,看起来确实是这样的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19991087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档