2017-02-22 10 views
1

このコードを辞書式に正しく変換するにはどうすればいいですか?辞書式を実行しているときに辞書から項目の値を取得するにはどうすればよいですか?

con=[['mon','2'],['jun','3'],['mon','3']] 
data={} 
for x in con: 
    if x[0] in data: 
     data[x[0]]=int(data[x[0]])+int(x[1]) 
    else: 
     data[x[0]]=int(x[1]) 

print data 

出力は次のようになります。

{'jun':3,'mon':5} 

私はこれを試してみましたが、それは '月' の値を追加しません:

data={} 
data={x[0]:(int(data[x[0]])+int(x[1]) if x[0] in data else int(x[1])) for x in con} 

出力は次のとおりです。

{'jun':3,'mon':3} 

辞書データが空である可能性があります。それを実行中に辞書データから値を得ることは可能ですか?

私の質問に重複がある場合はお知らせください。おかげ

答えて

1

あなたはあなたの問題は、あなたがそれを構築しているとして、あなたはdictにアクセスすることができないということであることを正しいです。これは回避策です。 kの各キーについて、conには、すべてのロケーションkconにあり、対応する値が合計されます。各kに対して、それはリストの理解を行います。

CODE:

con=[['mon','2'],['jun','3'],['mon','3']] 
data = {k: sum(int(con[i][1]) for i,(x,_) in enumerate(con) if x == k) for k,_ in con} 

print data 

OUTPUT:あなたが実際にzipファイルを必要としない

{'jun': 3, 'mon': 5} 
+1

@hobo、それは今かなり良く見えると – mitoRibo

+0

はるかに高速でなければなりませんありがとうございました。 :-) –

関連する問題