3

Tweepy 呼び出しの結果を dict (または dict の dict) に変換したいapi.trends_location(woeid)ので、値を操作できます (実際には、'name' 値の dict で終わりたいです)。Tweepy のドキュメントには、結果が「JSON オブジェクト」であると記載されていますが (こちらを参照)、取得すると、. 案の定、 は1 で、単一のアイテムが得られます: . type(retrieved)listretrievedlenretrieved[0]
[{'trends': [{'url': 'http://search.twitter.com/search?q=%23questionsidontlike', 'query': '%23questionsidontlike', 'events': None, 'promoted_content': None, 'name': '#questionsidontlike'}, ], (more of the same), 'created_at': '2011-01-31T22:39:16Z', 'as_of': '2011-01-31T22:47:47Z', 'locations': [{'woeid': 23424977, 'name': 'United States'}]}]

を呼び出すとjson.dumps、きれいにフォーマットされた表現が得られますが、それはあまり役に立たず、次のようになりjson.loadsます。__init__() got an unexpected keyword argument 'sort_keys'

どのように進めればよいですか?

完全なコードへのリンク: https://gist.github.com/805129

4

4 に答える 4

3

よし、これでいい!テスト済みです(追加情報を投稿していただきありがとうございます)。

>>> names = [trend["name"] for trend in retrieved[0]["trends"]]
>>> names
['#wishuwould', '#questionsidontlike', '#februarywish', 'Purp & Patron', 'Egyptians', 'Kool Herc', 'American Pie', 'Judge Vinson', 'Eureka Nutt', 'Eddie House']

json混乱のほとんどは、モジュールを使用して変換する必要がある JSON 文字列とは異なる JSON オブジェクトとして出力を参照しているドキュメントから生じたと思います。

これがどのように機能するか:キーretrievedを含む辞書である単一のアイテムを含むリストであり、トレンド辞書のリストでもあり、各トレンド辞書には関心のあるキーが含まれています。trendsretrieved[0]["trends"]name

于 2011-01-31T23:39:58.780 に答える
2

このようなものはあなたのために働くでしょうか?

def searchKeys(struct, keys, result = None, recursive = True):
        if result is None:
                result = []

        if isinstance(struct, dict):
                for k in keys:
                        if struct.has_key(k):
                                result.append(struct[k])

                if recursive:
                        for i in struct.values():
                                searchKeys(struct = i, keys = keys, result = result, recursive = recursive)
        elif isinstance(struct, list):
                if recursive:
                        for i in struct:
                                searchKeys(struct = i, keys = keys, result = result, recursive = recursive)

        return result

使用例:

>>> searchKeys(struct = a, keys = ['name'])
['United States', '#questionsidontlike']

dict/階層を再帰的にたどってキーlistのセットを検索しdict、対応する値を に格納しますlist

于 2011-01-31T23:39:41.573 に答える
0
>>> import simplejson
>>> a = {"response":[{"message":"ok"},{"message":"fail"}]}
>>> json = simplejson.dumps(a)
>>> simplejson.loads(json)
{'response': [{'message': 'ok'}, {'message': 'fail'}]}

http://docs.python.org/library/json.html

于 2011-01-31T23:53:45.563 に答える