Maison > Questions et réponses > le corps du texte
Tout d'abord, il existe une grande quantité de données, qui sont divisées en 3 unités :
类型 第一个值 第二值
Par exemple, il existe actuellement 100 éléments de données de ce type. Comment y faire face?
La première étape
Mon idée est de construire 1:n:1 via un dictionnaire.
Cependant, la situation est actuellement la même. Si le type est clé, que faut-il faire s’il existe le même type ? Parce que la clé du dictionnaire est unique.
La deuxième étape est que je veux obtenir la deuxième valeur via la première valeur. Comment puis-je obtenir la deuxième valeur à partir de la première valeur sans connaître la première valeur ?
Merci ! ~
Peut-être que l'expression n'est pas claire, permettez-moi de donner un exemple de 1:n:1
Par exemple, il y a deux données comme celle-ci
类型 第一个值 第二个值
(1) zhangsan 2017-01-01 是的我来了
(2) zhangsan 2017-05-01 我要走了
Ensuite, je veux composer quelque chose comme ceci :
'zhangsan':{{'2017-01-01': '是的我来了'},{'2017-05-01':'我要走了'}}
C'est le résultat que je souhaite.
C'est-à-dire. 1:n:1 signifie 类型:第一个值:第二个值
Je ne sais pas s'il existe une solution réalisable
为情所困2017-05-18 10:57:26
La première : Si la première valeur est unique sous le même type, alors vous pouvez essayer la structure suivante :
value = '1:n:1'
mapping = defaultdict(dict)
value_type, fir_val, sec_val = value.split(':')
mapping = {
value_type: {
fir_val: sec_val
}
}
Ce qui précède signifie que la création d'une valeur par défaut de 字典
的字典mapping
, 然后用类型
和第一个值
分别作为索引的key, 我个人觉得, 在类型
和第一个值
的共同约束下, 找到的第二个值
doit être unique. Si elle n'est pas unique, vous devez alors vous demander si vous devez l'écraser ou exister sous la forme d'une liste
Deuxième :
Si vous utilisez la structure de données ci-dessus, alors sans connaître la première valeur, vous pouvez uniquement parcourir le mappage[value_type], puis déterminer si la valeur est celle que vous voulez
迷茫2017-05-18 10:57:26
Que signifie 1:n:1 ? Relation de mappage ? Mais ce n'est pas important. J'ai un moyen simple et grossier d'écrire chaque élément de données sous forme de 3 tuples (type, val1, val2), puis de sauvegarder chaque élément de données dans un tableau [];
Sous construction Lors de la création d'un tableau, créez 3 dicts, typeDict = {type: [arrIdx]}, val1Dict={val1:[arrIdx]}, val2Dict={val2:[arrIdx]}
Lorsque vous souhaitez utiliser le type pour rechercher des données, utilisez simplement typeDict à partir de Rechercher tous les emplacements d'enregistrement correspondant au type.
De même, val1 et val2 sont identiques.
Lorsque vous souhaitez trouver typeA, val1=n, il vous suffit de croiser les ensembles de résultats trouvés à partir de typeDict, val1Dict.
某草草2017-05-18 10:57:26
S'il y a une grande quantité de données, il semble qu'il serait plus efficace d'utiliser une base de données comme mysql ou pandas spécialisée dans le traitement des données. Pandas dispose également d'une fonction to_dict dédiée.