Получение ключевых значений из пользовательского ввода в python dict - PullRequest
0 голосов
/ 08 мая 2018

У меня есть сотни IP-камер, которые я подключил к экземпляру amazon ec2, который выполняет NAT, поэтому камеры используют публичный IP-адрес экземпляра и могут переключаться между камерами на основе указанного порта. Я пытаюсь написать простой скрипт на Python, который будет возвращать значения ключей на основе пользовательского ввода. например, я хочу, чтобы пользователь мог вводить «truck22» и на основе этого ввода запрашивать правильный порт для этого транспортного средства. Затем я хотел бы, чтобы скрипт открывал веб-браузер для правильного хоста и порта. Мой код выглядит так:

import webbrowser
import os
host = 192.168.1.1
trucks = {'truck22': ':1400', 'truck22 rear': ':1401', 'truck76': ':1412'}
for key in trucks.keys():
value = trucks.get(key)
choice = input("Select your item: ")
if choice in trucks:
webbrowser.open("http://" +host +value)
else:
print("invalid Truck number")

ВЫХОД: веб-браузер открывается до 192.168.1.1:1400 Единственная проблема, с которой я столкнулся, это то, что он всегда возвращает первое значение ключа грузовика 22, которое является портом 1400, даже если я ввожу другое имя ключа. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

В вашем коде цикл for не обязателен. Вам нужно только проверить, есть ли ваш ввод в словаре. choice = input("Select your item: ") if choice in trucks: webbrowser.open("http://" +host +trucks[choice]) else: print("invalid Truck number")

0 голосов
/ 08 мая 2018

Вам нужно извлечь порт из dict, используя choice

Ex:

import webbrowser
import os
host = 192.168.1.1
trucks = {'truck22': ':1400', 'truck22 rear': ':1401', 'truck76': ':1412'}

choice = input("Select your item: ")
if choice in trucks:
    webbrowser.open("http://" +host + ":" +trucks.get(choice))
else:
    print("invalid Truck number")
...