Вывод ответа #1862312195

-

Ноу хау - от мастеров на заметку

Небольшие рецепты полезных решений

Krust


Репутация:
репутация:
| на сайте с 1970 года
сообщений:

Пост № 1862312195

Интересно. Когда народу надоест писать True вместо того чтоб просто 1 написать... Alen, тогда бы уж ещё способы написал...
y={'a':0, 'b':3}.get(x, None) # если в словаре есть ключ x, y=value, иначе y=None
-------
y=new_y or y # если new_y ложь, остается старое значение y
-------
y=('a','b')[x] # если x==1:y='b'. Частный случай, смена языка note((u'Hi !',ru('Привет!'))[lang])
-------
def add_y():y=(y+1,0)[y==6] # в функции увеличиваем y на 1 пока не достигнет 6, потом он снова 0.
-------
-------------
добавлено в 21.10: Делать было нечего...Вот:
Класс, наследованный от типа словаря. Словарь получил новые методы


# heap.py,by Krust (31,12,2009)

class heap(dict):
  def __init__(self, default={}):
    self.update(default)
  
  def __call__(self, el=None):
    h=self.items()
    h.sort()
    if el is None:return h # items
    else:return [x[el] for x in h] # key or value
    
  def index(self, arg, el=0):
    # if el is 0: return key, if 1 return value
    return self(el).index(arg)
    
  def keys_v(self,value):
    return [item[0] for item in self() if item[1]==value]
  
if __name__=='__main__':
  m=heap({'a':2, 'c':4, 'b':1}) # создание словаря с дополнительными методами
  # дальше с m можно работать, как с обычным словарем. Кроме того дополнительно:
  print m() # то же что m.items(), только сортированный
  print m(0) # ключи словаря, сортированные
  print m(1) # значения словаря, сортированные по ключам
  print m.index('b') # индекс ключа '1' в сортированном списке ключей
  print m.index(2,1) # индекс значения 2
  print m.keys_v(2) # список ключей, у которых значение равно 2


ответ опубликован:
Рейтинг: 5
голосов: 2