J'ai 2 dictionnaires avec différentes traductions comme ceci: Je voudrais créer une nouvelle liste de dictionnaires en dehors d'eux qui ressembleraient à ceci: p> bad_translations = []
lang = ['EN', 'DE']
uk = lang[0]
de = lang[1]
for k,v in english.items():
for kk, vv in german.items():
emb = {}
emb[uk] = v
emb[de] = vv
bad_translations.append(emb)
3 Réponses :
Vous êtes itération à travers à la place, vous pourriez faire P> allemand.items () code>, mais en réalité, ils doivent être liés, car les deux dictionnaires ont les mêmes clés. for k,v in english.items():
emb = {}
emb[uk] = v
emb[de] = german[k]
bad_translations.append(emb)
Mais cela ne produira pas les résultats exacts comme ce que la puissance est posée. Oui, les 2 dictionnaires partagent le même k code> mais si vous utilisez uniquement un dictionnaire, c'est-à-dire anglais code> Vous n'obtiendrez que c'est v code>, à utiliser Allemand [k] code> Vous devez faire référence au dictionnaire allemand code> quelque part.
Merci @danny! Qu'est-ce qui fonctionnerait si ces clés sont différentes dans certains cas?
Si vous avez des clés différentes, vous devez faire plus de travail. Vous voudrez peut-être également reconsidérer la partie "touche" de votre traduction. Sont "Word1" et "Word2" sont censés être des mots anglais? Si oui, le dict allemand code> déjà un dictionnaire de traductions? La question complète n'a pas vraiment de sens si ces clés sont différentes.
@FishingCode S'il existe des touches k code> dans allemand code> qui ne sont pas dans anglais code>, il n'y a pas de traduction et de la même manière vice versa. C'est jusqu'à OP pour déterminer ce qui devrait être fait dans ces cas. Si les deux dict ont le même ensemble de clés, tout va bien. Le code d'origine de l'OP n'essaie pas de résoudre ce problème, et ma réponse ne fait donc pas non plus
@FishingCode Je ne suis pas sûr de comprendre. Ma solution produit la sortie correcte en supposant anglais.Keys () == allemand.keys () code>, mais c'est le meilleur que nous puissions faire à moins que OP fournit plus d'informations. Où suis-je mal compris votre question?
Essayez ceci: pour chaque mot anglais, il crée un dictionnaire avec une touche comme 'fr' code>, avec le mot à partir de anglais < / code> et une autre clé comme 'de' code> avec sa valeur dans allemand code>. Ce dictionnaire est ajouté à traductions code>. P> p>
Merci @ lionrocker221! Cela fonctionne dans les cas où j'ai exactement les mêmes clés. Dans certains cas, les clés sont différentes, par exemple "Café" et "Café". Quelle serait la meilleure solution pour cela?
@ AZ43 Par exemple, si une clé dans anglais code> est "CAFE" code> et dans allemand code> c'est "CAFÉ" code>?
Les solutions données sont excellentes si anglais code> et allemand code> ont le même ensemble de clés. Cependant, si vous avez des ensembles partiels, considérons: combined = {}
for k in set(english.keys()).union(german.keys()):
if k in english:
combined.setdefault(k, {})['EN'] = english[k]
if k in german:
combined.setdefault(k, {})['DE'] = german[k]
Merci@adam! Vient d'essayer votre solution. Dans certains cas, mes clés sont différentes, par ex. "Café" et "Café". Quelle serait la meilleure solution pour cela?