Dictionary-Werte kombinieren

Beginner

This tutorial is from open-source community. Access the source code

Einführung

Dictionaries sind eine grundlegende Datenstruktur in Python und werden verwendet, um Schlüssel-Wert-Paare zu speichern. Manchmal müssen wir die Werte von zwei oder mehr Dictionaries zu einem einzelnen Dictionary kombinieren. In dieser Herausforderung werden Sie eine Funktion schreiben, die zwei oder mehr Dictionaries als Argumente nimmt und ein neues Dictionary zurückgibt, das die Werte der Eingabedictionaries kombiniert.

Dictionary-Werte kombinieren

Schreiben Sie eine Funktion combine_values(*dicts), die zwei oder mehr Dictionaries als Argumente nimmt und ein neues Dictionary zurückgibt, das die Werte der Eingabedictionaries kombiniert. Die Funktion sollte die folgenden Schritte ausführen:

  1. Erstellen Sie ein neues collections.defaultdict mit list als Standardwert für jeden Schlüssel.
  2. Iterieren Sie über die Eingabedictionaries und für jedes Dictionary:
    • Iterieren Sie über die Schlüssel des Dictionaries.
    • Fügen Sie den Wert des Schlüssels zur Liste der Werte für diesen Schlüssel im defaultdict hinzu.
  3. Konvertieren Sie das defaultdict in ein reguläres Dictionary mit der dict()-Funktion.
  4. Geben Sie das resultierende Dictionary zurück.

Die Funktion sollte die folgende Signatur haben:

def combine_values(*dicts):
    pass
from collections import defaultdict

def combine_values(*dicts):
  res = defaultdict(list)
  for d in dicts:
    for key in d:
      res[key].append(d[key])
  return dict(res)
d1 = {'a': 1, 'b': 'foo', 'c': 400}
d2 = {'a': 3, 'b': 200, 'd': 400}

combine_values(d1, d2) ## {'a': [1, 3], 'b': ['foo', 200], 'c': [400], 'd': [400]}

Zusammenfassung

In dieser Herausforderung haben Sie gelernt, wie Sie die Werte von zwei oder mehr Dictionaries zu einem einzelnen Dictionary kombinieren. Sie haben eine Funktion geschrieben, die zwei oder mehr Dictionaries als Argumente nimmt und ein neues Dictionary zurückgibt, das die Werte der Eingabedictionaries kombiniert.