繁体   English   中英

将功能分配给字典键-Python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM