Как сортировать по алфавиту из словаря в python? [dубликат]

Вам нужно передать указатель на указатель, если вы хотите это сделать.

  void barPush (список BarList **, Bar * bar) {if (list == NULL)  вернуть;  // нужно передать указатель на указатель на ваш список.  // если нет добавления для добавления, то мы выполняем if (bar == NULL) return;  // выделяем пространство для нового узла BarList * newNode = malloc (sizeof (BarList));  // присваиваем правильные значения newNode- & gt; val = bar;  newNode- & gt; nextBar = * list;  // и устанавливаем содержимое указателя на указатель на заголовок списка // (то есть: указатель на голову списка) на новый узел.  * list = newNode;  }  

Затем используйте его следующим образом:

  BarList * l;  l = EMPTY_LIST;  barPush (& амп; л, & амп; b1);  // b1 и b2 - это только bar barPush (& amp; l, & amp; b2);   

Джонатан Леффлер предложил вернуть нового руководителя списка в комментарии:

  BarList * barPush (список BarList *, Bar * bar) {//  если нет добавления для добавления, то мы закончили - возвращаем немодифицированный список.  if (bar == NULL) возвратный список;  // выделяем пространство для нового узла BarList * newNode = malloc (sizeof (BarList));  // присваиваем правильные значения newNode- & gt; val = bar;  newNode- & gt; nextBar = list;  // возвращаем новый заголовок списка.  return newNode;  }  

Использование становится:

  BarList * l;  l = EMPTY_LIST;  l = barPush (l, & amp; b1);  // b1 и b2 - это только бары l = barPush (l, & amp; b2);   
64
задан 25 September 2009 в 22:22
поделиться

6 ответов

Простой способ распечатать отсортированное содержимое словаря в Python 3:

  & gt; gt; & gt; gt;  dict_example = {'c': 1, 'b': 2, 'a': 3} & gt; & gt; & gt; & gt; & gt; & gt;  (key, value)) ... a: 3 b: 2 c: 1   

Выражение dict_example.items () возвращает кортежи, которые затем могут быть отсортированы по sorted () :

  & GT; & GT; & GT;  dict_example.items () dict_items ([('c', 1), ('b', 2), ('a', 3)]) gt; gt; gt; gt;  ('b', 2), ('c', 1)]  

Ниже приведен пример для симпатичного напечатать отсортированное содержимое значений словаря Python.

  для ключа, значение в сортировке (dict_example.items (), key = lambda d_values: d_values ​​[1]): print ("{}:  {} ". format (ключ, значение))  
74
ответ дан Scott Skiles 15 August 2018 в 20:08
поделиться
  • 1
    Очень хорошо. Вот пример, чтобы печатать отсортированное содержимое значений словаря Python: для ключа, значение в sorted (dict_example.items (), key = lambda d_items: d_items [1]): print (& quot; {}: {} & quot ;.format (ключ, значение)) – Scott Skiles 19 June 2017 в 15:16
  • 2
    @ScottSkiles вам следует отредактировать ответ и добавить свой пример к нему - я думаю, что это поможет будущим читателям – redbeam_ 14 March 2018 в 02:01
  • 3
    @redbeam_ круто! приложил его – Scott Skiles 15 March 2018 в 21:48
3
ответ дан Cat Plus Plus 15 August 2018 в 20:08
поделиться

У меня была та же проблема, что и у вас. Я использовал цикл for с сортированной функцией, проходящей в словаре следующим образом:

  для элемента в отсортированном (mydict): print (item)  
4
ответ дан CharlesB 15 August 2018 в 20:08
поделиться

На самом деле pprint модуль Python pprint уже сортирует словари по ключу. В версиях, предшествующих Python 2.5, сортировка запускалась только в словарях, чье довольно напечатанное представление охватывало несколько строк, но в версиях 2.5.X и 2.6.X, были отсортированы все словари .

Как правило, если вы пишете структуры данных в файл и хотите, чтобы они были доступны для чтения и записи, вам может потребоваться использовать альтернативный формат, такой как YAML или JSON. Если ваши пользователи сами являются программистами, если они поддерживают конфигурацию или состояние приложения, сбрасываемые с помощью pprint и загруженные через eval , могут быть разочаровывающей и подверженной ошибкам задачей.

13
ответ дан rcoder 15 August 2018 в 20:08
поделиться
  • 1
    btw, ast.literal_eval ("{'a': 0, 'b': 1, 2: 'c'}") - & gt; {2: 'c', 'a': 0, 'b': 1} , поэтому нет необходимости в нечестивом eval . – jfs 26 September 2009 в 05:09

Я написал следующую функцию для печати dicts, lists и tuples в более читаемом формате:

  def printplus (obj): "" "Довольно печатает переданный объект."  "" # Dict if isinstance (obj, dict): для k, v в sorted (obj.items ()): print u '{0}: {1}'. Format (k, v) # List или tuple elif isinstance  (obj, list) или isinstance (obj, tuple): для x в obj: print x # Другие другие: print obj  

Пример использования в iPython:

  & GT; & GT; & GT;  dict_example = {'c': 1, 'b': 2, 'a': 3} & gt; & gt; & gt; & gt; & gt; & gt;  printplus (dict_example) a: 3 b: 2 c: 1 & gt; gt;  tuple_example = ((1, 2), (3, 4), (5, 6), (7, 8)) & gt; & gt; & gt; & gt;  printplus (tuple_example) (1, 2) (3, 4) (5, 6) (7, 8)  
12
ответ дан Scott Foubister 15 August 2018 в 20:08
поделиться

Другая альтернатива:

  & gt; & gt; & gt; & gt; & gt;  mydict = {'a': 1, 'b': 2, 'c': 3} & gt; & gt; & gt; & gt;  import json  

Затем с python2:

  & gt; & gt; & gt; & gt;  print json.dumps (mydict, indent = 4, sort_keys = True) # python 2 {"a": 1, "b": 2, "c": 3}  

или с python 3:

  & gt; & gt; & gt; & gt; & gt;  print (json.dumps (mydict, indent = 4, sort_keys = True)) # python 3 {"a": 1, "b": 2, "c": 3}  
10
ответ дан Skippy le Grand Gourou 15 August 2018 в 20:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: