2016-08-26 13 views
0

これについて他のすべての投稿をチェックしましたが、問題を解決できません。'datetime.datetime'オブジェクトにサブスクリプトがありません

idとdatetimeオブジェクトを持つタプルを保持するリストを作成しました。毎回次のようにリストをクリーンアップしようとします: last_encounters = [item for item in last_encounters if item[1] < datetime.utcnow] 私は'datetime.datetime' object is not subscriptableというエラーが表示されます。それはかなり迷惑になって、私はdictsを試してみました..うまくいきませんでした。

また、項目[1]をテストしました。私のプリントによれば、datetimeです。

(x,y) for x,y in last_encounters if y < ...に変更しようとしてもうまくいきませんでした。

いくつかの便利なコード:

list = [] 
d_t = datetime.utcfromtimestamp(9000000)  
list += [('lel', d_t)]  
list = [item for item in list if item[1] < datetime.utcnow] 

は、私は誰かが私がここで間違ってやっているものを私に伝えることができると思います。事前に

おかげで、

ケビン

+3

あなたが投稿したコードでは、あなたが何も記述していないエラーは発生しません: 'last_encounters'は空ですので、リストcompは空のリストを返します。 [MCVE]を投稿してください。 – RoadieRich

+0

私は、リストが実際に変更されたコードだけを追加しました。私はそれが空リストをループしないと仮定しますか?私は値を印刷し、それはまったく空ではありませんでした。私はタプル項目の値を示していました。第二の項目は確かにdatetimeでした。 – kevintjuh93

+1

投稿されたコードでは、最初の行は 'last_encounters'を空のリストに設定します。それがあなたのリストに含まれているものがリスト内包に当たったときに含まれていないものであれば、*その*を投稿する必要があります。 – RoadieRich

答えて

1

last_encounters += (a, b)を実行すると、last_encounters(a,b)の2つのシーケンスが追加されます。つまり、タプルをリストに追加するのではなく、最後にabがついてしまうことになります。

あなたの問題を解決するには、2つのオプションがあります。

  1. があなたのタプルを含む配列を追加します。

    last_encounters += [(d["id"], d["d_t"])] 
    
  2. 好ましく、appendメソッドを使用します。

    last_encounters.append((d["id"], d["d_t"])) 
    
+0

Uch、そうです。本当にありがとう! – kevintjuh93

0

は方法utcnow()としてutcnowを呼び出してみてください。私はあなたのコードのバージョンを使用してエラーを再現することができませんでした

last_encounters = [item for item in last_encounters if item[1] < datetime.utcnow()] 

が、バージョン付きリスト内の項目がこの修正につながります。

+0

私はそれを試みたと信じていますが、もう一度試してみましょう... – kevintjuh93

+0

私はそれをして、今言います:datetime.datetimeとstr .... oddを比較できません... – kevintjuh93

+0

クリーンアップしようとしているリストの中で、問題の説明に追加する必要があります。 datetimesでない文字列があるように思えます。 – Hanshan

1

Itあなたの問題は、リストにタプルを追加する方法です。

l = [] 
l += ("a", "b") 
print l 

l = [] 
l.append(("a", "b")) 
print l 

います:

>>> ['a', 'b'] 
>>> [('a', 'b')] 

だからlist+=tupleはあなたが望むものであるlist.extend(tuple)ないlist.append(tuple)を呼び出すことと同じです。ここの問題を示すための例です。

発生した例外の意味に関する副注意: X is not subscriptableは、オブジェクトがそれをサポートしていない間にその構文X[some int]を呼び出そうとしていることを意味します。

関連する問題