1. Lista de descripción de la estructura de datos dict:
"trends": [
{
"name": "Rick Gates",
"promoted_content": null,
"query": "%22Rick+Gates%22",
"tweet_volume": 135732,
"url": "http://twitter.com/search?q=%22Rick+Gates%22"
},
{
"name": "#TheBachelorette",
"promoted_content": null,
"query": "%23TheBachelorette",
"tweet_volume": 91245,
"url": "http://twitter.com/search?q=%23TheBachelorette"
},
{
"name": "#KremlinAnnex",
"promoted_content": null,
"query": "%23KremlinAnnex",
"tweet_volume": 42654,
"url": "http://twitter.com/search?q=%23KremlinAnnex"
}]
2. Destino de clasificación:
Ordene los elementos en tendencias según el valor de tweet_volume.
3. Código de implementación:
Los siguientes 4 métodos son todos posibles, el cuarto tiene un mejor rendimiento
1)trends = sorted(trends,key = lambda e:e['tweet_volume'],reverse = True)
2)trends = sorted(trends,key = lambda e:e.get('tweet_volume'),reverse = True))
3)trends = sorted(trends,key = lambda e:e.__getitem__('tweet_volume'),reverse = True))
4)trends = sorted(trends,key = itemgetter('tweet_volume'),reverse = True)
Descripción:
- Cuando selecciono la clave en el dict, elijo un método de índice como e ['tweet_volume']. También puede elegir e.get ('tweet_volume') o e .__ getitem __ ('tweet_volume') para obtener la clave. Valor de
- Al utilizar
operator
laitemgetter
función del módulo , dicha estructura de datos se puede ordenar muy fácilmente.from operator import itemgetter
4. Prototipo de la función Sotred ():
sorted(iterable[,key][,reverse])
iterable: Variables que deben ordenarse (obligatorio)
clave: especifica el elemento ordenado
reverse: especifique si desea invertir el orden, el valor predeterminado es falso
Para obtener más información, consulte el artículo anterior: Dist series (1): Ordenar según la clave y el valor del diccionario
5. Lambda: función anónima, la forma general es
lambda arguments: expression
6. Considerando que algunos datos son NULL, es necesario procesarlos con anticipación:
Para un tweet_volume vacío establecido en 0, el código completo:
for item in trends:
if(item['tweet_volume'] is None):
item['tweet_volume'] = 0
trends = sorted(trends,key = lambda e:e['tweet_volume'],reverse = True)