Я новичок в Python и пытаюсь получить только определенные значения из заданного словаря. Мой дикт выглядит так:
my_dict = {
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
}
for (key,value) in my_dict:
if (int(value) > 2000):
print(value)
Как я могу вернуть только соответствующие пары (ключ, значение) для значений выше 2000? Спасибо за помощь.
Вы можете попробовать это -
my_dict = {
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
}
for key in my_dict:
if not int(my_dict[key]) > 2000:
my_dict.pop(key,None)
print(my_dict)
Идея состоит в том, чтобы удалить ключи, которые не соответствуют условию
Все в порядке. Я бы также использовал <=
вместо not ... >
. Диктовка, вероятно, самая чистая, но использует больше памяти, my_dict = {k: v for k, v in my_dict.items() if int(v) > 2000}
.
Вы можете попробовать .items()
вот так:
my_dict = {
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
}
for (key,value) in my_dict.items():
if (int(value) > 2000):
print(value)
Спасибо, .items() сделал это проще. Я вижу этот метод сейчас на w3schools.
Если словарь не слишком велик, может быть дешевле восстановить его без нежелательных значений с помощью понимания словаря. «Это путь [Python]».
my_dict = {k: v for k, v in my_dict.items() if int(v) > 2000}
#{'Value2': '3000', 'Value3': '4000'}
my_dict = {
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
}
for key, value in my_dict.items():
if int(value) > 2000:
print(key, value)
Да, .items() сделал свое дело.
Вы можете добиться этого, перебирая только ключи — когда вы знаете ключ словаря, вы также знаете значение:
my_dict = {
"Value1": "2000",
"Value2": "3000",
"Value3": "4000"
}
for key in my_dict:
value = my_dict[key]
if int(value) > 2000:
print(key, value)
@ggorlen - Спасибо за улов, обновил ответ