Я хочу иметь возможность манипулировать значениями Python dict (добавляя их фактически), используя строки в его ключах. Например, вот что я имею в виду:

dict = {'010': 155, '001': 1363, '011': 68, '101': 356, '100': 1377, '111': 36, '110': 69, '000': 4768}

Скажем, я хочу извлечь и / или добавить значения тех ключей, которые заканчиваются на 1 (например, '001': 1363, '011': 68, '101': 356, '111': 36 в этом примере), и поместить их где-то как в значение { {X2}} или массив или что-то. Как мне это сделать?

Спасибо!

-2
Kim Dong 8 Июл 2019 в 08:19

4 ответа

Лучший ответ

Пытаться:

tmp = [ v for k, v in dict.items() if k.endswith('1') ]

[] синтаксис - это синтаксис понимания списка (создает список на основе выражения внутри. v - значение, которое будет помещено в список. dict.items() - итератор, который создает v оценивает и возвращает все элементы в dict в виде пар (первый - ключ, второе значение), if условия фильтруют значения, помещенные в tmp, - только те, для которых ключ заканчивается {{X7} } будет позволено через.

Если вы хотите добавить их, вы можете попробовать:

sum((v for k, v in dict.items() if k.endswith('1')), 0)
3
Radosław Cybulski 8 Июл 2019 в 05:22

Вы можете перебирать словарь с помощью функции item() и делать следующее (согласно вашему примеру) -

sum([v for k, v in dict.items() if k.endswith('1')])

Подробнее здесь о понимании словаря

1
Tom Ron 8 Июл 2019 в 05:23

Попробуй это,

dic = {'010': 155, '001': 1363, '011': 68, '101': 356, '100': 1377, '111': 36, '110': 69, '000': 4768}
print(sum([dic[key] for key in dic if key.endswith('1') ]))

# 1823

И одна вещь, dict является Встроенные функции в Python. Не используйте встроенные функции как ваши имена переменных.

1
Kushan Gunasekera 8 Июл 2019 в 05:31

Попробуйте это, если не поняли толкование словаря -

a = 0
for k in dict:
    if k.endswith('1'):
        a += dict[k]

print(a)
2
Thomas 8 Июл 2019 в 05:31