Je tente de lire deux fichiers .dat et de créer un programme utilisant la valeur de aid2name comme clé dans un dictionnaire qui a la clé et les valeurs de l'aide2numplays, défini comme ses valeurs. Tout cela dans l'espoir que le fichier produira un résultat incluant (nom de l'artiste, identifiant de l'artiste, fréquence des pièces). Il est à noter que le premier fichier fournit le nom de l'artiste et l'identifiant de l'artiste, tandis que le second fichier fournit l'identifiant de l'utilisateur, l'identifiant de l'artiste et la fréquence par utilisateur. Des idées pour agréger ces fréquences par utilisateur et les afficher dans le format (nom de l'artiste, identifiant de l'artiste, fréquence des lectures)? Voici ce que je suis parvenu à ce jour:Utilisation de setdefault dans Python 3.6 pour afficher (nom, identifiant et nombre de fréquences) à l'aide des informations de deux fichiers différents
import codecs
aid2name = {}
d2 = {}
fp = codecs.open("artists.dat", encoding = "utf-8")
fp.readline() #skip first line of headers
for line in fp:
line = line.strip()
fields = line.split('\t')
aid = int(fields[0])
name = fields[1]
aid2name = {int(aid), name}
d2.setdefault(fields[1], {})
#print (aid2name)
# do other processing
#print(dictionary)
aid2numplays = {}
fp = codecs.open("user_artists.dat", encoding = "utf-8")
fp.readline() #skip first line of headers
for line in fp:
line = line.strip()
fields = line.split('\t')
uid = int(fields[0])
aid = int(fields[1])
weight = int(fields[2])
aid2numplays = [int(aid), int(weight)]
#print(aid2numplays)
#print(uid, aid, weight)
for (d2.fields[1], value) in d2:
group = d2.setdefault(d2.fields[1], {}) # key might exist already
group.append(aid2numplays)
print(group)
Il pourrait aider à voir un exemple de ce que la structure de données finale devrait ressembler, je ne suis pas certain que vous avez l'intention d'utiliser [setdefault] (http://stackoverflow.com/questions/3483520/use-cases-for-the-setdefault-dict-method) – brennan