[英]Assigning function to a dictionary key - Python
我有一个问题,我在字典中将功能分配给“条目”。 这是从代码:
assignment[message[0]] = self.request.sendall
if members == 0:
for request in assignment:
request("PING")
print(request)
print("Sent PING")
这就是回溯。 据我了解,它认为我正在尝试调用字符串。
Traceback (most recent call last):
File "C:\Python27\lib\SocketServer.py", line 295, in_handle_request_noblock
self.process_request(request, client_address)
File "C:\Python27\lib\SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
File "C:\Python27\lib\SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Python27\lib\SocketServer.py", line 655, in __init__
self.handle()
File "C:\Users\Radek Golan\Desktop\Sequencer\Sequencer_Server.py", line 58, in handle
request("PING")
TypeError: 'str' object is not callable
这是列出的字典:
{'nick1': <bound method _socketobject.sendall of <socket._socketobject object at 0x02883EA0>>, 'nick2': <bound method _socketobject.sendall of <socket._socketobject object at 0x02883FB8>>}
我究竟做错了什么?
您的迭代在这里:
for request in assignment:
正在为您提供字典的键 。 不是值。 要在迭代方式时获取值,您需要:
for request in assignment:
print(assignment[request])
要么
for key, value in assignment.items():
print("key {}".format(key))
print("value {}".format(value))
更简单的是使用values
代替:
for value in assignment.values():
print(value)
请看一下字典文档以进一步了解它:
https://docs.python.org/3/tutorial/datastructures.html#dictionaries
字典上的for循环迭代键。 您的request
变量将包含"nick1"
。 您需要assignment[request]("Ping")
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.