Сохранить элементы словаря, а не поп? - PullRequest
0 голосов
/ 19 июня 2019
l = {'apple': [0, 4], 'orange': [3], 'beer': [9], 'rice': [6], 'melon': [10, 11]}

Как сохранить только {apple: [0,4], melon:[10,11]}

Я знаю, что их длина 2.

Ответы [ 3 ]

1 голос
/ 19 июня 2019

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

l = {'apple': [0, 4], 'orange': [3], 'beer': [9], 'rice': [6], 'melon': [10, 11]}
result = {key: val for key, val in l.items() if len(val) == 2} # This will only keep entries with length 2.
print(result) # {'apple': [0, 4], 'melon': [10, 11]}
0 голосов
/ 19 июня 2019

Вы можете удалить ключи, если значение len не равно 2.

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

d = {'apple': [0, 4], 'orange': [3], 'beer': [9], 'rice': [6], 'melon': [10, 11]}
for k in list(d):  # Make copy of keys
    if len(d[k]) < 2:
        del d[k]
print(d)  # -> {'apple': [0, 4], 'melon': [10, 11]}

Но я бы порекомендовал словарное понимание этого.

0 голосов
/ 19 июня 2019

отфильтруйте элементы с if len(value) > 1 значения dict.

l = {'apple': [0, 4], 'orange': [3], 'beer': [9], 'rice': [6], 'melon': [10, 11]}

result = { key:value for key, value in l.items() if len(value) == 2}

print (result)

См. Следующий результат:

{'apple': [0, 4], 'melon': [10, 11]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...