Я пытаюсь создать интерактивную программу терминала в стиле оболочки на Python3 для школьного проекта. Он должен легко расширяться и не полагаться на модули, не встроенные в Python. Для этого я сделал модуль, который импортирован и содержит что-то вроде этого:
commandDictionary = {
"command":'''
Information for my program on how to handle command
In multiple lines.''',
}
helpDictionary = {
"command":'''
Short Text for the help-command to display
Also in multiple lines.'''
}
Я хочу перечислить все ключи из helpDictionary в строковой форме, если введена справка. Результат должен выглядеть так:
Help
List of available commands:
command1, command2, command3, command4 #Newline after 4 commands.
command5, command6, commandWithALongName, command8
Моя проблема в том, что helpDictionary.keys () возвращает что-то вроде этого:
['command1', 'command2']
и мне не нужны ни скобки, ни '.
Это возможно?





Итак, ваша проблема в том, как распечатать список без скобок. Есть несколько решений.
for k in helpDictionary.keys(): print(k)li = list(helpDictionary.keys())
print(str(li)[1:-1])
Ваше решение для обхода ключей интересно, можно ли каждый раз не делать разрыв строки?
Это не очень хороший способ. Это неэффективно и полагается на конкретное строковое представление списка.
@MadPhysicist Да, ваше решение лучше. Я узнал от вас, спасибо.
Я ценю, что ты это говоришь. Я рад, что мой опыт полезен другим.
Если вы не хотите сохранять содержимое в памяти, вы можете распечатать любую итерацию, которую хотите, с произвольным разделителем, например:
print(*helpDictionary.keys(), sep=', ')
Если вам нужна строка для чего-то, используйте str.join на нужном разделителе:
s = ', '.join(helpDictionary.keys())
print(s)
Оба случая, показанные выше, будут выводить результат практически в произвольном порядке, потому что словари используют хэш-таблицы под капотом. Если вы хотите отсортировать команды лексикографически, замените helpDictionary.keys() на sorted(helpDictionary.keys()).
Из любопытства, почему вы отменили выбор моего ответа почти через год? Что я могу улучшить?