поиск числа в словаре и печать в python - PullRequest
1 голос
/ 20 июня 2020
A = int(input("A: "))

B = int(input("B: "))

У меня есть словарь = {"11": 1, "05": 2, "04": 3, "03": 4, "02": 5, "01": 6}

Если я ввожу A = 2, B = 4,

, код печатает словарь от 02 до 04.

Я не хочу использовать нарезку, но не могу найти способ сделать это.

Кто-нибудь знает, как?

Ответы [ 3 ]

1 голос
/ 20 июня 2020

Вы можете использовать простую форму для l oop вот так:

d = {"11": 1, "05": 2, "04": 3, "03": 4, "02": 5, "01": 6}

A = int(input("A: "))
B = int(input("B: "))

for k,v in d.items():
    if int(k) >= A and int(k) <= B:
        print(k,v)

Вы также можете использовать функцию filter для возврата итератора к элементам в словаре, который вас интересует:

it = filter(lambda item: int(item[0]) >= A and int(item[0]) <= B, d.items())
for item in it:
    print(item)

Или вы можете использовать понимание словаря, чтобы получить новый словарь отфильтрованных элементов:

sub_dict = {k:v for k,v in d.items() if int(k) >= A and int(k) <= B}
print(sub_dict)
0 голосов
/ 20 июня 2020

Попробуйте это:

A = int(input("A: "))

B = int(input("B: "))

dictionary = {"05": 1, "04": 2, "03": 3, "02": 4, "01": 5}

for n in range(A, B):
    print(dictionary[f"{n+1}.zfill(2)])

Вывод:

A: 2
B: 4
3
2
0 голосов
/ 20 июня 2020

Вы можете вручную создать ключи из входных данных:

  • преобразовав входные данные в целые числа
  • сделав диапазон от range(A, B+1)
  • преобразовав выходы функции диапазона обратно к stings с ведущим нулем
  • ...

edit:

Пример с простым l oop:

a = {   "07": 3,
        "08": 99,
        "09": 2,
        "10": 55,
        "11": -5,
        "12": 1}

A = 8    # result of input()...
B = 11

keys = []
for i in range(A, B+1):
    if i <10:
        temp = ''.join(['0', str(i)])
        keys.append(temp)
    else:
        keys.append(str(i))


for key in keys:
    print(key, a.get(key))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...