2010-10-14 22 views
5

Sto scrivendo il codice che cercherà Twitter per parole chiave e memorizzarli in un dizionario Python:Accesso dizionario Python

 base_url = 'http://search.twitter.com/search.json?rpp=100&q=4sq.com/' 
     query = '7bOHRP' 
     url_string = base_url + query 
     logging.info("url string = " + url_string) 
     json_text = fetch(url_string) 
     json_response = simplejson.loads(json_text.content)            
     result = json_response['results'] 
     print "Contents" 
     print result 

Il dizionario risultante è:

Contents[{ 
    u 'iso_language_code': u 'en', 
    u 'text': u "I'm at Cafe en Seine (40 Dawson Street, Dublin) w/ 2 others. http://4sq.com/7bOHRP", 
    u 'created_at': u 'Wed, 06 Oct 2010 23:37:02 +0000', 
    u 'profile_image_url': u 'http://a1.twimg.com/profile_images/573130785/twitterProfilePhoto_normal.jpg', 
    u 'source': u '<a href="http://foursquare.com" rel="nofollow">foursquare</a>', 
    u 'place': { 
     u 'type': u 'neighborhood', 
     u 'id': u '898cf727ca504e96', 
     u 'full_name': u 'Mansion House B, Dublin' 
    }, 
    u 'from_user': u 'pkerssemakers', 
    u 'from_user_id': 60241195, 
    u 'to_user_id': None, 
    u 'geo': None, 
    u 'id': 26597357992, 
    u 'metadata': { 
     u 'result_type': u 'recent' 
    } 
}] 
Status: 200 OK 
Content - Type: text/html;charset = utf - 8 
Cache - Control: no - cache 
Expires: Fri, 01 Jan 1990 00: 00: 00 GMT 
Content - Length: 0 

Come posso accedere alla ' from_user 'e qual è la' u 'prima della chiave e del valore?

+0

'Contents' non è in realtà un dizionario. È un elenco che contiene un singolo dizionario. – hughdbrown

risposta

11
result[0][u'from_user'] 

Il u prefisso significa che è un unicode invece di un str.

1

ad accedere alla voce ala

print Contents['from_user'] 

La 'U' davanti alla stringa indica che la stringa è uni-codice.

+0

sarebbe effettivamente Contenuto [0] ['from_user'] come Ignacio ha sopra ... Il contenuto sembra essere un elenco di dizionari basato sulla domanda posta. – Aaron

+0

Sì, non l'ho notato. – sizzzzlerz

0

nota che in Python 3.x non è necessario il 'u' prima della stringa perche' tutta la stringa sono oggetto unicode ...

questo può essere ottenuto anche in Python 2.x, basta messo nella parte superiore del vostro codice

from __future__ import unicode_literals 
0

Dal momento che l'articolo restituito è una lista che contiene un dizionario si dovrebbe fare:

print Contents[0]['from_user'] 

la u è per unicode e non c'è bisogno di dire che quando si accesso i dati. Python si prende cura di questo.

Dal momento che i dati restituiti sono in un dizionario per sé la dichiarazione finale sarebbe

print result['Contents'][0]['from_user']