Вы можете использовать функции filter()
и itemgetter()
(это должно быть быстрее, чем listcomp):
from operator import itemgetter
d = [
['A', 'A1', {}],
['A', 'A2', {}],
['B', 'B1', {}],
]
itemget = itemgetter(0, 1)
result = filter(lambda x: itemget(x) == ('B', 'B1'), d)
for i in result:
print(i)
# ['B', 'B1', {}]
Вы не можете " экспортировать " свой .bashrc
в .zshrc
. .bashrc
- это файл, который запускает команды bash
. .zshrc
- это файл, который запускает команды zsh
.
Вы не можете ожидать, что zsh
сможет запустить bash
Команды в вашем .bashrc
, поэтому вы должны преобразовать его в новый .zshrc
вместо попытки запустить .bashrc
из .zshrc
или скопировать первый в последний.
Если вам нужен общий файл инициализации оболочки для всех ваших оболочек; используйте .profile
(и удалите .bashrc
и .zshrc
). Он поставляется всеми оболочками POSIX. И там, Придерживайтесь только функций оболочки POSIX . Затем этот код будет работать в любой оболочке POSIX. (Хотя я не уверен на 100%, что zsh
соответствует POSIX).
См .: http://mywiki.wooledge.org/DotFiles .
Хотя - и я бы сначала неправильно прочитал эту часть вашего вопроса - вы не должны испытывать ошибки из bash
при запуске ваших .bashrc
, если вы не введете команды zsh
в там. А вы? Какие ошибки вы получаете? Похоже, вы добавили код zsh
в свои .bashrc
и bash
(очевидно) не понимает.
В качестве отступления, ojblass
пытается сделать вывод о переносимости только успешным. zsh
- отличная оболочка (хотя я сам не имел наград), но при написании сценариев; Я бы рекомендовал вам сделать это с помощью #! / Usr / bin / env bash
. В основном только для себя (и, в конечном итоге, для людей, с которыми вы делитесь) ради мобильности.