@Nubbin

Передвод кода с php на python?

Доброе утро, я тут перевожу php код в python пожалуйста помогите с одной проблемой.

Вот php код

class Test {
	private $data = [];

	public function unit() 
	{
		foreach ($data as $row) 
		{
			$id = rand();
			$this->data[$data[0]][$data[1]][$data[2]] = [
                'name' => $data[2],
                'id' => $id
            ];
		}


		$this->sortAscAll();
	}

	private function sortAsc($a, $b)
    {
        if ($a['id'] == $b['id']) {
            return 0;
        }
        return ($a['id'] < $b['id']) ? -1 : 1;
    }

	public function sortAscAll() 
	{
		foreach ($this->data as $oneID => $In) 
		{
            foreach ($In as $twoId => $item) {
                uasort($item, [$this, 'sortAsc']);
                $this->data[$oneID][$twoId] = $item;
            }
        }
        return $this;
	}
}


Я частично перевел, но не получается перевести сортировку.

class Test:
    __data = dict()

    def unit(self):
    	self.__data = AutoVivification()

    	for item in read:
    		self.__data[data[0]][data[1]][data[2]] = (
                    'name', data[2],
                    'id', rand
            )

        self.__sortAscAll()

    def __sortAscAll(self):
        for oneID, In in self.__data.items():
            for twoID, item in In.items():
            	# Никак не могу сортировать по ключу id
                sorted(item.items(), key=lambda tuple: print(tuple), reverse=True)
                self.__data[oneID][twoID] = item



class AutoVivification(dict):
    def __getitem__(self, item):
        try:
            return dict.__getitem__(self, item)
        except KeyError:
            value = self[item] = type(self)()
            return value


Помогите пожалуйста очень нужно, уже 2 день не могу сделать
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если у вас список (list) словарей (dict), то для сортирвки его inplace можно писать так:

list_of_dicts = item.items()
list_of_dicts.sort(key=lambda x: x['id'])


Но меня смущает item.items(). Если эта функция у вас возвращает не сам исходный список, а его копию, то сортировка не поменяет исходный список. Именно поэтому я разделил на две строчки то, что вполне читабельно было бы и в одной строке. Хотя если вы у вас item - стандартный dict, то всё ок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Popmechanic Москва
от 100 000 до 150 000 руб.
Panda Media Нижний Новгород
от 70 000 руб.
НЛ Континент Новосибирск
от 60 000 до 100 000 руб.
18 авг. 2018, в 17:54
6000 руб./за проект
18 авг. 2018, в 16:00
60000 руб./за проект