Как из словаря взять нужное?
У меня есть код:
def main():
ip = str(input("ip: "))
time = str(input("time (max 250): "))
port = str(input("port: "))
method = str(input("method (CLDAP, NTP, DNS): "))
return ip, time, port, method
if __name__ == "__main__":
print(main())
Он возвращает ('1284', '250', '234', 'DNS').
Как мне отделить элементы, то есть, сделать как-то так:
if __name__ == "__main__":
ip = main().ip
time = main().time
port = main().port
method = main().method
Ответы (2 шт):
Автор решения: Gemini
→ Ссылка
Функция main возвращает кортеж из 4 элементов: ip, time, port, method. Чтобы этим значениям присвоить собственную переменную, нужно добавить при вызове main следующее:
ip, time, port, method = main()
В итоге получим:
def main():
ip = str(input("ip: "))
time = str(input("time (max 250): "))
port = str(input("port: "))
method = str(input("method (CLDAP, NTP, DNS): "))
return ip, time, port, method
if __name__ == "__main__":
ip, time, port, method = main()
print(ip, time, port, method)
Автор решения: SergFSM
→ Ссылка
В вашем коде не увидел словаря. Но если нужно реализовать возможность доступа к аргументам через точку, то самые очевидные варианты - это создать класс или использовать именованный кортеж:
class Mane:
def __init__(self):
self.ip = str(input("ip: "))
self.time = str(input("time (max 250): "))
self.port = str(input("port: "))
self.method = str(input("method (CLDAP, NTP, DNS): "))
def __str__(self):
return str(self.__dict__)
main = Mane()
'''
ip: 1.1.1.176
time (max 250): 100
port: 2000
method (CLDAP, NTP, DNS): DNS
'''
print(main)
'''
{'ip': '1.1.1.176', 'time': '100', 'port': '2000', 'method': 'DNS'}
'''
main.ip
'''
'1.1.1.176'
from collections import namedtuple
ip = str(input("ip: "))
time = str(input("time (max 250): "))
port = str(input("port: "))
method = str(input("method (CLDAP, NTP, DNS): "))
Main = namedtuple('Main', 'ip time port method')
main = Main(ip, time, port, method)
print(main)
'''
Main(ip='1.1.1.176', time='200', port='2000', method='DNS')
'''
main.ip
'''
'1.1.1.176'
Правда, в случае именованного кортежа объект будет неизменяемый.