vom Listen-key die values im dict auslesen?
def add_vocabulary(key_word, value_word, form='infinitiv'):
dater = datetime.datetime.now().strftime("%d-%m-%Y")
    try:
        with (open('wordlist.json', 'r', encoding="utf-8-sig") as f):
            data = json.load(f)
            if dater not in data:
                data[dater] = {}
            if "0" not in data[dater]:
                data[dater]["0"] = {}
            if key_word not in data[dater]["0"]:
                data[dater]["0"] = [key_word]
            # KeyError 'h'
            if form not in data[dater]["0"][map(lambda y: y['Tags'], data[key_word])]:
                data[dater]["0"][key_word][form] = {}
                data[str(dater)]["0"][key_word][form] = value_word
                print("added as " + form + ": " + "english: " + key_word + "   german: " + value_word)

            while value_word != data[dater]["0"][key_word][form]:
                twogerman = data[dater]["0"][key_word][form]
                overwrite = input(f'do you want overwrite "%s" to "%s" (y-n): ' % (twogerman, value_word))
                if "y" == overwrite or "yes" == overwrite:
                    old_german = data[str(dater)]["0"][key_word][form]
                    data[str(dater)]["0"][key_word][form] = value_word
                    print("overwrite: " + "   form: " + form + ",   english: " + key_word + ",   german: " + old_german)
                    print("white: " + "   english: " + key_word + ",   german: " + value_word)
                    break
                elif "n" == overwrite or "no" == overwrite:
                    break

        with open('wordlist.json', 'w', encoding="utf-8-sig") as f:
            json.dump(data, f)

Schlüsselwort = h; value_word=j;

Ich möchte über das Schlüsselwort = ['h']-Werte auf die Werte zugreifen

Ich habe es mit mappen versucht, aber es erscheint der gleiche KeyError „h“.

Array, Python, Liste, JSON
Einfügen und Löschen in einer sortierten Liste?

Hallo, ich habe eine einfach verkette Liste in C++ mit Einfüge- und Lösch-Operation.

Leider funktioniert sie noch nicht, wie sie soll. Beim Einfügen werden die Werte mit cin gelesen, aber wenn ich die Zahlen 1.4 2.3 5.6 eingebe, wird nur 1.4 ausgegeben.

Habe ich in der Methode inserte() einen Logikfehler?

#include <iostream>

using namespace std;

class Elem {
  private:
    const double zahl;
	Elem *next;
  public:
    Elem(double a, Elem *b): zahl(a), next(b) {
	}
	friend class List;
};

class List {
  private:
    Elem *head;
  public:
    List(): head(nullptr) {
	}

    void inserte(double a) {
	  if ((head == nullptr) || (head->zahl > a)) {
	    head = new Elem(a, head);
	  }
	  else {
        Elem *b = head;
		
		for(; ((b->next != nullptr) || (b->next->zahl <= a)); b = b->next) {
        }
		
		Elem* tmp = new Elem(a, b->next);
		b->next = tmp;
	  }
	}
	
	bool remove(double a) {
	  Elem *tmp;
	  
	  if ((head == nullptr) || (head->zahl > a)) {
	    return false;
	  }
	  else if (head->zahl == a) {
	    tmp = head;
		head = head->next;
		delete tmp;
	  }
	  else {
		for (tmp = head; tmp->next->zahl < a; tmp = tmp->next) {
		}
		
		if ((tmp->next == nullptr) || (tmp -> next->zahl > a)) {
		  return false;
		}
		else {
		  Elem * help = tmp->next;
		  tmp ->next = tmp->next->next;
		  delete help;
		  
		  return true;
		}
	  }
	  
	  return false;
	}
	
	void output() {
	  int i = 0;
	  
	  for (Elem *tmp = head; tmp != nullptr; tmp = tmp->next) {
		cout << tmp->zahl << '\n';
		i++;
	  }
	  
	  cout << "Anzahl der Elemente: " << i << '\n';
	}
};

int main() {
  double a;
  List b;
  
  while (cin >> a) {
	if (a > 0) {
      b.inserte(a);
	}
	else if (a < 0) {
	  b.remove(-a);
	}
	else {
	  break;
	}
	
	b.output();
  }
  
  return 0;
}
pointer, Liste

Meistgelesene Fragen zum Thema Liste