Comment implémenter une structure de données 1:n:1 en Python ?
怪我咯
怪我咯 2017-05-18 10:55:26
0
3
759

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

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(3)
为情所困

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

.
迷茫

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.

某草草

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal