需要的信息:这是在Python 3.4.1
中我在试图弄清楚从telnet获取的对象是如何工作的时候遇到了问题。我使用这段代码:
def EventHandler(sender, event):
print("Printing server response: " + str(event.parsed)) #This is the server text
print(type(event.parsed)) #I try to check what it's, seems a list
TryingToFix = str(event.parsed)[1:-1] #I try to make it a string...
dict(TryingToFix) #...just to later try to make it a dict
print(TryingToFix) #this never works
结果是:
Printing server response: [{'targetmode': '2', 'invokername': 'Saelyth', 'invokerid': '18472', 'msg': 'test message', 'invokeruid': 'myuniqueid'}]
<class 'list'>
ValueError: dictionary update sequence element #0 has length 1; 2 is required
有什么问题?
我希望能够单独使用响应中的项目。例如,我只想打印invokername或只打印消息。我相信所需的代码是event.parsed['msg']
,但它给我带来了麻烦,因为它似乎根本不是一个字典。
如何以所需方式使用列表中的项目?
预期答案:打印(仅1项信息)
答案 0 :(得分:2)
你只需要一个包含一个字典的列表对象。您可以通过首先索引列表,然后是包含的字典来访问字典:
print event.parsed[0]['msg']