Объединение двух очередей в алфавитном порядке

Я пытаюсь объединить две очереди (эти две очереди предполагают, что они были отсортированы в алфавитном порядке) в третью очередь и вернуть третью очередь в алфавитном порядке. Например:

queue1 = ["a","d","x"]
queue2 = ["b","c","y","z"]
# the third queue should look like
queue3 = ["a","b","c","d","x","y","z"]

Это мой код (я не использую метод merge()):

import string
from pythonds.basic.stack import Stack

class Stack1Queue:

  Stackone = Stack()
  Stackto = Stack()

def __init__(self):
  self.items = []

def add(self, element):
  self.items.append(element)

def remove(self):
  if len(Stackto) == 0:
      if len(Stackone) == 0:
          return None
      while not Stackone.isEmpty():
          p = Stackone.pop()
          Stackto.push(p)
   return Stackto.pop()

def peek(self):
    return self.items[len(self.items) - 1]

def isEmpty(self):
    return self.items == []

def size(self):
    return len(self.items)


class MergeQueue(Stack1Queue):
  adict = dict(enumerate(string.ascii_lowercase))
  Queuethr = Stack()

  def merge(self, Stackone, Stackto):

      while not Stackone.isEmpty() and Stackto.isEmpty():
          for k, v in adict.items():
              if Stackone.peek() == adict.get(v):
                  Queuethr.push(Stackone.peek())
              else:
                  Queuethr.push(Stackto.peek())
          print(dict(Queuethr))
          return 1

В основном мой первый класс Stack1Queue - это реализация двух стеков для создания очереди. Во всяком случае, мне просто интересно, правильно ли написана моя функция merge или нет. Когда я пытаюсь бежать:

s = Stack1Queue()
p = Stack1Queue()
q = MergeQueue()
s.add("z")
s.add("y")
s.add("d")
s.add("b")
s.add("a")
p.add("x")
p.add("d")
p.add("c")
print(q.merge(s, p))

Возвращает 0 для размера q.

Из вашего вопроса неясно, чего вы пытаетесь достичь. Если вы хотите получить отзывы о своей реализации, сформулируйте тему и тело, чтобы отразить это. Если вы хотите узнать, как объединить, а затем отсортировать два списка, удалите код, поскольку он на самом деле не проясняет ваш вопрос. Кажется, ваш прикрыл ...

Marc Wagner 02.10.2018 19:27
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
709
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Объедините и используйте sorted

queue1 = ["a","d","x"]
queue2 = ["b","c","y","z"]

queue3 = sorted(queue1 + queue2)
['a', 'b', 'c', 'd', 'x', 'y', 'z']

Очереди Python на самом деле этого не делают, даже если в коде OP есть списки вместо очередей. Следует ли редактировать вопрос?

osuka_ 02.10.2018 19:22

Другие вопросы по теме