2017-07-06 5 views
3

私はPythonには新しく、辞書とリストを扱っています。日付ごと、私は場所ごとにカウントの分割を得る - ここに は私がするように、これを要約するリストリストからサマリー値を持つ辞書を作成する/ 2つの異なる辞書を組み合わせて値を集計する

detail = [(1, [u'apple', u'2017-07-03T08:03:32Z', 'boston']), 


(2, [u'orange', u'2017-07-03T08:58:35Z', 'NOLOCATION']), 


(3, [u'grape', u'2017-07-03T12:14:12Z', 'boston']), 


(4, [u'cherry', u'2017-07-04T13:16:44Z', 'new york']), 


(5, [u'strawberry', u'2017-07-06T10:56:22Z', 'san francisco']), 


(6, [u'plum', u'2017-07-06T10:56:22Z', 'seattle'])] 

です。このような何か -

details_summary = {'2017-07-03':[(boston,2), (NOLOCATION,1)], '2017-07-04': 
[new york,1], '2017-07-06':[(san francisco,1),(seattle,1)]} 

私は各日付(キー)用のマップ(可視化)を生成したいので、私は、この形式でそれをしたい、とロケーション・ポイント(値)。

私はこのように見える二つの異なる辞書を作成することになった - 今すぐ

location = {u'boston': 2, 'NOLOCATION': 1, u'new york': 1, u'san francisco': 
1, u'seattle': 1} 

date = {'2017-07-03':3, '2017-07-04':1, '2017-07-06':2} 

を、私は私が得るように、各日付ごとに異なる場所にカウントの分割を要約したいと私はここで立ち往生しています。 Pythonのコレクションの

答えて

3
from collections import Counter 
d = {} 
for k, (w, t, l) in detail: 
    date = t.split('T')[0] # you can choose to enhance date "isolation" 
    if date in d: 
     d[date].append(l) 
    else: 
     d[date] = [l] 
details_summary = {k: Counter(d[k]).items() for k in d.keys()} 
+0

これは** 'INT' オブジェクトが反復可能でない戻り**線2の誤差(kについて、(W、T、L)詳細: – Newbie

+0

@Newbieは 'detail'変数の値をチェックするために、問題のループの前に' print(detail) 'を置きます。誤って 'int'を上書きした可能性はありますか? –

+0

Ok ..しかし、私はBoston、New Yorkなどの数(出現数)とその鍵が必要です。 – Newbie

1

メイク使用defaultdictCounter

from collections import defaultdict, Counter 
summary = defaultdict(list) 
for item in detail: 
    summary[item[1][1].split('T')[0]].append(item[1][2]) 

details_summary = {str(k):[(x,y) for x,y in Counter(v).iteritems()] for k,v in summary.iteritems()} 
print details_summary 
{'2017-07-06': [('san francisco', 1), ('seattle', 1)], '2017-07-04': [('new york', 1)], '2017-07-03': [('boston', 2), ('NOLOCATION', 1)]} 
+0

これは機能しました。ありがとう。 – Newbie

関連する問題