

`dict = {'MENTION': '{"MENTIONEES":[{"S":"0","E":"10","M":"xxxxx"}]}'}`

このようなものがあって、xxxxxの部分を表示するにはどうしたらいいですか？


CC BY-SA 3.0
2017-05-02T16:09:23.183
34422
2017-05-03T08:13:54.883
22925
question
python
要素の中の要素？の表示のしかた


MENTIONの内容が文字列になっているので、  
それを書式としては辞書のようでも辞書として使うことはできません。  
なので  
evalを使って変換してやるのが簡単だと思います。

[code]

    dict = {'MENTION': '{"MENTIONEES":[{"S":"0","E":"10","M":"xxxxx"}]}'}
    subdict = eval(dict['MENTION'])
    print( subdict['MENTIONEES'][0]['M'] )
    
[/code]

[DEMO](http://ideone.com/mb6Tsc)


CC BY-SA 3.0
2017-05-02T21:26:28.087
34424
2017-05-02T21:36:21.063
2017-05-02T21:36:21.063
5044
5044
34422
answer

[code]

    '{"MENTIONEES":[{"S":"0","E":"10","M":"xxxxx"}]}'
    
[/code]

という文字列は Python の辞書リテラルとしても JSON としても有効ですね。  
この文字列がどこからやって来て、どのようなフォーマットに従っているのか理解して正しい方法で扱う必要があります。  
Python のリテラルとして扱う方法は既存の BLUEPIXY さんの回答にありますので、とりあえず JSON としてのパース方法を示します。

（Python には [`dict`
というクラス](http://docs.python.jp/3/library/stdtypes.html?highlight=dict#dict)が
`dict` というグローバル変数として存在しますので、これを上書きするのは混乱の元です。以下では変数名に `d` を使います）

[code]

    #!/usr/bin/python3
    # coding: utf-8
    import json
    
    d = {'MENTION': '{"MENTIONEES":[{"S":"0","E":"10","M":"xxxxx"}]}'}
    
    # 辞書 d から JSON 文字列の部分を得る
    mention_json = d['MENTION']
    
    # JSON 文字列をパースし、辞書を得る
    mention_dict = json.loads(mention_json)
    
    # 結果の辞書から目的の値を得る
    print(mention_dict["MENTIONEES"][0]["M"])
    
[/code]


CC BY-SA 3.0
2017-05-03T08:13:54.883
34433
2017-05-03T08:13:54.883
3054
34422
answer