Аналог Python array_flip или лучший способ сделать это?

#python #sorting

#python #сортировка

Вопрос:

Существует ли аналог array_flip (php) для Python 3.x?

От

 obj = ['a', 'c', 'b' ]
  

Для

 {'a': 1, 'c':2, 'b': 3}
  

Комментарии:

1. {i:j 1 for j,i in enumerate(obj)}

2. Что происходит, когда у вас есть два a s? Должен ли быть изменен самый низкий индекс или новый?

Ответ №1:

Вы можете использовать понимание списка вместе с dict конструктором следующим образом:

 >>> obj = [ 'a', 'c', 'b' ]
>>> dict((x, i   1) for i, x in enumerate(obj))
{'a': 1, 'c': 2, 'b': 3}
  

Как отмечено в комментариях, вы также можете использовать простое понимание dict:

 >>> { x: i   1 for i, x in enumerate(obj) }
{'a': 1, 'c': 2, 'b': 3}
  

Комментарии:

1. вы можете использовать dict_comprehension вместо list_comprehension

2. enumerate имеет start параметр: {x:i for i,x in enumerate(obj, start=1)} .

3. Спасибо! Красиво и просто)