万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Python MongoDB リスト内包表記でdel文を使いたい

u'username': u'User 01', u'_id': ObjectId('53f4125e8c92eb815be3ce07'), u'username': u'User 02', u'_id': ObjectId('53f4125e8c92eb815be3cc09') みたいなデータが入っている場合。

このデータをリストにしたいけど、_idとかが邪魔なのでこれを省く時の話。

MongoDBさんはu'_id'が邪魔。 del x[u'_id']とかで取っ払いたい。

しかしdelを入れることが出来ない?

res_list = [x for x in room_mate if not u'_id' in x] とすれば消すというよりそもそも条件からu'_id'を外すのでこれでOKかな?

っと思ったが、これだとu'_id'を含む列がそもそも入らない・・・

lambdaを使う?ラムダ式とか式なら使えるっぽい。 popも関数なので式なのでpopを使う? del文は文だから文は使えない?

python - Deleting key/value from list of dictionaries using lambda and map - Stack Overflow を見た。

res_list = [(lambda x: x.pop(u'_id')) for x in room_mate] コレでエラーが出ない。

ちなみに、文と式の違いはここのはてなブログがいいかも? Pythonでの式(Expression)と文(Statement) - minus9d's diary

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)