2016-06-30 4 views
0

Есть ли способ сделать список ключей dict, исключая конкретный, в одной единственной командой?Python dict key + удаление списка

Используя две команды, это можно сделать:

aDict = {'a': 'cat', 'b': 'dog', 'c': 'cow'} 
list1 = aDict.keys() 
list1.remove('b') 

я ищу СТГ как list1 = aDict.keys().remove('b'). Я знаю, что это не работает, но работает ли это?

+0

Зачем вам это нужно в одной команде? –

ответ

3

Вы можете использовать представление списка, чтобы фильтровать результаты по мере прохождения по ним. Например:

list1 = [key for key in aDict if key != 'b']

бы это сделать.

1

То, что вы, вероятно, ищете список понимание:

list1 = [key for key in aDict.keys() if key != 'b'] 

Тем не менее, правильный ответ может быть просто использовать пример вы предоставляете. В руководстве по стилю Python предлагается написать свой код, чтобы максимизировать очевидность того, что вы делаете. Если нет веских оснований для этого в однострочном пространстве, постарайтесь использовать более длинный код, который сделает ваше намерение более ясным.

+1

Я не согласен. Когда вы привыкли видеть их, список понятий прекрасно читается. Те, с кем вы и я ответили, сразу рассказали вам, каковы наши намерения: 1) составление списка, 2) ключей aDict, 3) кроме «b». Это очень ясно! –

+1

@KirkStrauser Я в основном согласен, и я абсолютно люблю понимание списков. Но я думаю, что любой вопрос о том, чтобы сделать логику одним лайнером, должен содержать предупреждающую наклейку, которая делает вашу логику одним лайнером, не обязательно, делает ее лучше. –

+0

О, конечно. Я думаю, что этот конкретный случай - отличный случай для однострочного интерфейса, который может быть кратким, эффективным и читаемым сразу. Хотя у меня нет много терпения для кодового гольфа. –

Смежные вопросы