Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dificuldades em avaliar variáveis em JSON

Tentando trabalhar com esse código, não consegui imprimir o resultado esperado. Ambas as variáveis mobile e desktop permanecem zeradas.

Tentei dar um print para verificar como estava sendo processado o código e descobri que para cada device in obj[deviceType], device imprime letra por letra, e não o mobile ou desktop.

Como poderia resolver isso?

import jsonlines

with jsonlines.open('ecommerce-events.ndjson') as reader:

    revenue = 0
    mobile = 0
    desktop = 0

    for obj in reader:

        eT = obj['eventType']

             if eT == 'page':

            for device in obj['deviceType']:

                if device == 'mobile':

                    mobile += 1

                elif device == 'desktop':

                    desktop += 1

    print(mobile)
    print(desktop)

O arquivo JSON pode ser baixado em https://s3.amazonaws.com/ml-challenge/ecommerce-events.ndjson.xz

1 resposta
solução!

Gustavo, é que obj['deviceType'] é a string que você quer, já, então você não precisa fazer esse for por essa variável, olha só:

for obj in reader:
    if obj['eventType'] == 'page':
        if obj['deviceType'] == 'mobile':
            mobile += 1
        elif obj['deviceType'] == 'desktop':
            desktop += 1

Espero que tenha ajudado! :D abraços e bons estudos