Ich versuche, ein Wörterbuch zu einem anderen Wörterbuch zu verbinden. Ich habe zwei Schlüssel; eine, die einzigartig ist und eine andere, die nicht einzigartig ist. Ich möchte Informationen über den nicht eindeutigen Schlüssel verknüpfen und alle Informationen belassen, da es sich um einen eindeutigen Schlüssel handelt, d. H. Die Anzahl eindeutiger IDs muss gleich bleiben.Join auf nicht-eindeutige zweite ID - Python
Irgendwelche Ideen, wie ich das erreichen kann?
Dies ist das erste Wörterbuch:
names = [
{'id': '1', 'name': 'Peter', 'category_id': '25'},
{'id': '2', 'name': 'Jim', 'category_id': '20'},
{'id': '3', 'name': 'Toni', 'category_id': '20'}
]
Dies ist das zweite Wörterbuch:
categories = [
{'category_id': '25', 'level': 'advanced'},
{'category_id': '20', 'level': 'beginner'}
]
Und das ist, was ich versuche zu erreichen:
all = [
{'id': '1', 'name': 'Peter', 'category_id': '25', 'level': 'advanced'},
{'id': '2', 'name': 'Jim', 'category_id': '20', 'level': 'beginner'},
{'id': '3', 'name': 'Toni', 'category_id': '20', 'level': 'beginner'}
]
EDIT:
names = [
{'id': '1', 'name': 'Peter', 'category_id': '25'},
{'id': '2', 'name': 'Jim', 'category_id': '20'},
{'id': '3', 'name': 'Toni', 'category_id': '20'}
]
categories = [
{'category_id': '25', 'level': 'advanced'},
{'category_id': '20', 'level': 'beginner'}
]
def merge_lists(l1, l2, key):
merged = {}
for item in l1+l2:
if item[key] in merged:
merged[item[key]].update(item)
else:
merged[item[key]] = item
return merged.values()
courses = merge_lists(names, categories, 'category_id')
print(courses)
gibt:
([{'id': '1', 'name': 'Peter', 'category_id': '25', 'level': 'advanced'},
{'id': '3', 'name': 'Toni', 'category_id': '20', 'level': 'beginner'}])
Jede Anstrengung von Ihrer Seite? Was hast du bisher versucht? SO ist kein Kodierungsdienst. Als Ausgangspunkt, warum schleifen Sie nicht über das zweite Wörterbuch –
Ihre Beschreibung ist ein wenig verwirrend. Sie haben nicht zwei Wörterbücher: Sie haben zwei Listen von Wörterbüchern. Sie könnten jedoch den Code effizienter machen, indem Sie ein Wörterbuch aus 'categories' mit dem Wert category_id als Schlüssel und der zugehörigen Ebene als Wert erstellen. –
Ihre Daten sind bei weitem nicht optimal strukturiert für die Transformation, die Sie erreichen möchten. Denken Sie also darüber nach, welche Struktur das Problem erleichtern würde, und versuchen Sie dann, Ihre bestehende Struktur zu transformieren. – holdenweb