# Este programa demonstra a leitura e utilização de dados de um ficheiro JSON # com mensagens do Twitter. # Modifique-o para resolver o problema proposto. # O módulo json permite descodificar ficheiros no formato JSON. # São ficheiros de texto que armazenam objetos compostos que podem incluir # números, strings, listas e/ou dicionários. import json # Abre o ficheiro e descodifica-o criando o objeto twits. with open("twitter.json", encoding="utf8") as f: twits = json.load(f) # Analise os resultados impressos para perceber a estrutura dos dados. print(type(twits)) # deve indicar que é uma lista! print(type(twits[0])) # cada elemento da lista é um dicionário. print(twits[0].keys()) # mostra as chaves no primeiro elemento. # Cada elemento contém uma mensagem associada à chave "text": print(twits[0]["text"]) # Algumas mensagens contêm hashtags: print(twits[880]["text"]) # A) word_count: dict[str, int] = {} for tweet in twits: tweet_content: str = tweet["text"] for word in tweet_content.split(): if word not in word_count: word_count[word] = 0 word_count[word] += 1 word_list = list(word_count.keys()) print("A)\n" + str(word_list), end="\n\n") # B) ordered_list = sorted(word_list, key=lambda t: word_count[t], reverse=True) print("B)\n" + str(ordered_list), end="\n\n") # C) ordered_hashtag_list = [word for word in ordered_list if word.startswith('#')] print("C)\n" + str(ordered_hashtag_list), end="\n\n") # D) print("D)\n") most_used = word_count[ordered_hashtag_list[0]] for hashtag in ordered_hashtag_list: print(f"{hashtag:<30} ({word_count[hashtag]:>2}) {'+' * ((word_count[hashtag]*18)//most_used)}")