2010年01月09日 09:26 カテゴリPython Pythonの辞書(dict型)をvalue値でソート Posted by yawamen No Comments No Trackbacks Tweet そもそも辞書(dict型)には順序はないのですが・・・ key値やvalue値でソートして出力したい時があります. key値の時は簡単 d = {'A':500, 'B':200, 'C':300, 'D':100, 'E':400} for k, v in sorted(d.items()): print k, v 実行結果 A 500 B 200 C 300 D 100 E 400 value値の時も案外簡単 for k, v in sorted(d.items(), key=lambda x:x[1]): print k, v 実行結果 D 100 B 200 C 300
holly's wiki hollyさんのwiki トップページページ一覧メンバー掲示板編集 × python moduleねた 最終更新: kurt0027 2010年11月13日(土) 23:26:38履歴 Tweet よく使いそうなのだけ別途まとめた sys 自分のファイル名 file print(__file__) これでもよい import sys print(sys.argv[0]) ファイルの何行目 perlでいうLINE import sys # _getframeのデフォルト引数は0(depth) print(sys._getframe().f_lineno) ただし、_getframeを使うよりinspectモジュールを使うほうがよさそうな気がする http://d.hatena.ne.jp/t2y-1979/20090909/1252474203 にちょっとした使い方
August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) はじめに GAE/Python ではスレッドや子プロセス等による並列化が出来ないので、タスクキューを使うのが一般的です。 しかし、URLフェッチについては、非同期リクエストを利用することで、タスクキューを使わずに複数のHTTP通信を同時実行出来ます。
August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) はじめに この数ヶ月、GAE/Python の勉強を兼ねて幾つかのGAEアプリを作りました。 その過程で気づいたこと/ハマったことをまとめました。 Tips一覧 今回取り上げる Tips は次の通りです。 開発環境 Python2.5 を使う 最新の
Pythonバージョン 2.5 or 2.6を使う。 3.xはまだ時期尚早というか、DjangoやGoogle App Engineが対応していないので事実上選択肢にならない (DjangoとGoogle App Engineが対応したら移行が加速すると思います)。 ちなみに、RedHat LinuxにはPython 2.4がプリインストールされていますが、 SQLiteが動かないなど開発作業を行うにあたってはちょっと厳しい。 ソースコンパイル 、 EPEL からyumで拾う、aptitude install python2.5するなどなど、お好きな方法でインストールしてください。 MacOSXならMacPortsが便利です。 パッケージ管理 とりあえずsetuptoolsとpip入れましょう。 setuptools pip setuptools入れ方: wget http://peak.
Google App Engine + Kay Framework で RESTful な Web API を作成するとき、データの更新は HTTP メソッドの PUT を使っています。PUT では、更新に必要なデータがリクエストのボディで渡されてきます。データは JSON 形式を使うことが多いです。 リクエストを受け取ったら、ボディから JSON を取り出します。実際は dict ですけど。この dict、値のほとんどが文字列なので、Integer や Boolean への変換が面倒なことこの上ないです。 そこで閃きました。Kay の Form を使えばいいんじゃないか、と。Form は画面に表示しませんが、パラメータの検証機能と、文字列から適切な型への変換機能は使えそうです。 import simplejson from google.appengine.ext import db f
前回「秋はまだですか」と書きましたが、その日のうちに気温下がったw これでちょっと過ごしやすくなったかも。…薄着で寝ててちょっと風邪引きそうになったのは内緒(・ω・) 本題。 クロスドメインでの非同期通信(XMLHttpRequest Level2)をGoogle App Engineで実装したのでメモ。はまったポイントもいくつか書いておきます。 特にハマったのは出力ヘッダ周り。 Access-Control-Allow-Origin これはあちこちのサイトに書かれてますね。このヘッダを「*」で出力してあげると他ドメインからの通信を受け付けるようになります。・・・が、これだけじゃダメなんです。 Access-Control-Allow-Methods こいつを指定してあげないとサーバーが受け付けてくれません。GETならGET、POSTならPOST・・・と指定してあげないといけません。これは
今回はPythonのtwistedで、HTML5のWebSocketを使って複数クライアントのマルチチャットのデモを実現する方法を自分のメモ代わりに書いておこうと思います。 前書き HTML5でwebSocketが導入されて、Safari5やらChromeやらで、利用可能になっています。しかしながら、対応サーバがたくさんあるわけでもないので、静観しておりました(本業がWeb関係ではないもので)。しかし、とりあえず、以下を読み、 @IT 第1回 node.jsの衝撃とwebSocketが拓く未来 そんでもって、以下を読みました。 naoyaのはてなダイアリー:Mojolicious::Lite で webSocket を使ったチャットを作る で、 node.js を眺めてみて、おぉ。。。なるほど。。。でもさ、なんか、このイベント処理モデルどっかで見たことが……。この既視感に、とても興味を覚え
オライリーiPhone向け電子ブックipa形式からepub形式に変換ツールをpythonで作ってみた! オライリーiPhone向け電子ブックを簡単な操作をすることで、パソコンでも読めるようにできるようなので、早速Programming Google App Engineを買ってみましたw 3,000円以上もするものが\600円で買えちゃうなんてすてき~www Goog App En 1.0.ipaというファイルがiTuneのフォルダに増えているので、これのbook以下のフォルダをzipにして、拡張子をepubにすればいいらしい。 早速ファイルを作成して、FirefoxのEPUBReaderを入れて、読み込んで見たところ読み込めました! あんまり自動化する意味もなさそうですが、Pythonで作ってみましたw zipfileライブラリをインポートすることで、bookフォルダ以下を直接読み込み書
Greeさんの最高です!会場ありがとうございました。 node.jsのハカソンをやって、リアルタイムWeb関係のLTをやるという進行の会でした。node.jsはwktkですが、手が出せませんでした。 そのかわりFlaskとみんな大好きなmeinheldを使ったWebSocketアプリ作ってみました。 リアルタイムで出来たら嬉しいと思うことにサーバーの状態監視があります。sshが使えない環境でも、ブラウザ一つでtopがリアルタイムに更新されたら嬉しいなぁと思っていたのでこれを気にやってみたら意外と簡単に出来ました。 ファイル構成 ws_test/. -- __init__.py -- monitor.py -- templates -- websocket.html `-- websocket_top.py 各ソース websocket_top.py from flask import Fl
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー Pythonのメタプログラミング手法の一つ「メタクラス」は,初心者にとっては「なんか強そう/経験値たくさんもらえそう」なアイテムの最右翼だと思う。反面「どうすればいいか/なにができるか」ということがなかなか理解しづらい。 英語のブログを見ていたら,メタクラスの理解に役立ちそうなちょうどよいサンプルを見つけたので,紹介がてら独自の解説を付け加えたいと思います。 メタクラスを簡単に説明すると,「本来コードを書かなければ実現できないような処理を黒魔術的な処理でなんとかしちゃう」ためのテクニックです。コード量を(時には劇的に)減らすことができたり,すっきりした見通しの良いクラス設計を実現できま
Python勉強し始めて一ヶ月くらいたったんで一度復習を兼ねてまとめてみようと思います。僕が今までPHPとかPerlとかJavaScriptを使っていて、Pythonはこうやるのかーとか、これは便利だなーと思ったところ、開発していてはまったところなどピックアップしてみました。 初めてのPythonを読んで初心者向け勉強会に参加した程度の知識です。とりあえず初めてのPythonがかなりいいのでこれ読むだけで大体基礎は習得できた気がします。基本的な文法の説明だけでなく、大事なことは何回も繰り返し書いてあったり、Pythonの思想などにも触れているのでなぜこういう実装になっているかということも理解できます。これオススメ。 尚、このエントリーではPythonのバージョンは2.5をベースにしてます(主にGoogleAppEngineで使ってるので)。間違えなどあったらツッコミお待ちしてます。 文法、
((Pythonで) 書く ((さらに良い) Lisp) インタプリタ) Peter Norvig / 青木靖 訳 前のエッセイでは、90行のPythonコードでシンプルなLispインタプリタを書く方法を示した(lis.py)。このエッセイでは、3倍込み入っているが、より完全なlispy.pyを実装しよう。それぞれの節で1つの機能追加を扱っている。 (1) 新しいデータ型 - 文字列、論理型、複素数、ポート Lispyへの新しいデータ型の追加は3つの部分からなる。データの内部表現、それを扱う手続き、読み書きのためのシンタックスだ。ここでは4つの型を追加する(入力ポート以外はPythonのネイティブ表現をそのまま使う)。 文字列 文字列リテラルはダブルクォーテーションで囲まれる。文字列の中で \n は改行を、\" はダブルクォーテーションを意味する。論理型 構文 #t と #f はTrue
最近になって日本においてもAndroid端末が続々と発表されて巷で賑わいを見せている。ドコモからはGALAXY S、auからはIS03、ソフトバンクからはDesire HDと立て続けに発売される。このほかにも年末までにタブレット端末を含めた複数のAndroid端末が発売されるようで結構なことだ。 Androidも盛り上がってきたし、Android端末を使って手軽で役に立つことができないか考えてみた。そこで今回、Android端末をウェブサーバにして、そこに電子掲示板システム(BBS)を構築してみた。これさえあれば不意にプライベートなBBSを使いたくなったときにいつでも利用することができる。たとえばライトニングトークやセミナーなどのようなイベントの参加者からその場でちょっとしたアンケートや感想を貰いたいときに便利ではないかと思う。ちょっとした話題作りにもなるかも。 電子掲示板システムの作成に
はじめてFlask を使ってみたらなかなかよかったので、Google App Engine 環境で、比較的大きな規模のプロジェクトまで対応できるようにするにはどうしたらいいのか考えた。 こんなかんじ。 $ ls $PROJECT_ROOT api app.yaml core crawler __init__.py lib settings.py tests webroot api, crawler, webroot がFlask App。 dispatcher は app.yaml で指定した。 余計なロードが発生しないのでこれがいいと思うんだけどどうだろう。 各アプリごとに同じような記述を各箇所でしているのが気になる。 この他ルートのFlask App から流していく方法もありそう。 handlers: - url: /api/.* script: api/main.py - url:
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く