私は自分のメッセージをRFIDリーダーで受信しています。自分のID(この場合はepc
)は リストを選択的に追加するには?
datetime
(行われる)ユニークで、ある場合
- :私は何をしようとしていることは重複を削除し、2つのだけ条件以下のリストに追加することです5分間隔の後にされた(まだRFIDリーダで読み取っているので、私は同じタグを追跡することができ、すべて5分)
import paho.mqtt.client as mqtt import json testlist = [] def on_message(client, userdata, msg): payloadjson = json.loads(msg.payload.decode('utf-8')) line = payloadjson["value"].split(',') epc = line[1] datetime = payloadjson['datetime'] # datetime is in this string format '2016-04-06 03:21:17' payload = {'datetime': datetime, 'epc': epc[11:35]} # this if-statement satisfy condition 1 if payload not in testlist: testlist.append(payload) for each in teslist: print (each) test = mqtt.Client(protocol = mqtt.MQTTv31) test.connect(host=_host, port=1883, keepalive=60, bind_address="") test.on_connect = on_connect test.on_message = on_message test.loop_forever()
どのように私ができます条件2を達成する?
私は
私の所望の出力は次のようなものになります達成しようとしている不明確な目標のために謝罪UPDATE
:これはおそらく容易にすることができ
{'datetime': 2016-04-06 03:21:17', 'epc': 00000001} # from Tag A
{'datetime': 2016-04-06 03:21:18', 'epc': 00000002} # from Tag B
...
...
# 5 minutes later
{'datetime': 2016-04-06 03:21:17', 'epc': 00000001} # from Tag A
{'datetime': 2016-04-06 03:21:18', 'epc': 00000002} # from Tag B
{'datetime': 2016-04-06 03:26:17', 'epc': 00000001} # from Tag A
{'datetime': 2016-04-06 03:26:18', 'epc': 00000002} # from Tag B
...
...
# Another 5 minutes later
{'datetime': 2016-04-06 03:21:17', 'epc': 00000001} # from Tag A
{'datetime': 2016-04-06 03:21:18', 'epc': 00000002} # from Tag B
{'datetime': 2016-04-06 03:26:17', 'epc': 00000001} # from Tag A
{'datetime': 2016-04-06 03:26:18', 'epc': 00000002} # from Tag B
{'datetime': 2016-04-06 03:31:17', 'epc': 00000001} # from Tag A
{'datetime': 2016-04-06 03:31:18', 'epc': 00000002} # from Tag B
...
...
回答ありがとうございます! 'testlist ['epc']' vs 'testlist [epc]'の違いは何ですか?私の現在の理解では、前者は単純に 'testc'のキーとして' epc'を使うことを意味します。後者はどうでしょうか?何が「魔法」ですか? –
'' epc''は 'e'、' p'、 'c'の3文字からなる文字列リテラルです。 'testlist ['epc']'はそのリテラル文字列をキーとして使用しています。対照的に、 'epc'は変数名であり、任意の値にバインドすることができます。例えば、 'epc = 42'は名前' epc'を値 '42'に束縛します。 'testlist [epc]'は 'epc'という名前にバインドされた値をキーとして使います。 – RootTwo