字典(python)可以这样吗?不是字符串而是跨度(来自 spaCy)?

Can a dictionary (python) like this? not string but span (from spaCy)?

我有一个关于词典的问题:

我们可以创建像dict_1这样的字典吗?

dict_1 = {Lily: [20], Tom: [21, 22]}
dict_2 = {'Lily': [20], 'Tom': [21, 22]}

以前只看过dict_2这样的词典,现在,我得到了dict_1这样的词典。在我的dict_1中,Lily实际上是一种.span(在spaCy中)。我不能使用 print(dict_1['Lily'])print(dict_1[Lily]) 来打印 20,它总是 return 一个错误:

print(dict_1['Lily'])
KeyError:XXX 
(I understand this error)

or 
print(dict_1[Lily])
SyntaxError: invalid syntax
(I do not understand this error)

问题:

如何在 dict_1 中打印键 Lily 的值? (即 20

谢谢!

在Python中,您无法生成包含未定义变量的字典。

dict_1 = {Lily: [20], Tom: [21, 22]} # this will not work.

但是如果你将变量设置为字符串或其他,那么它可以像下面这样工作:

Lily = "Lily"
Tom = "Tom"

dict_1 = {Lily: [20], Tom: [21, 22]} # this works!

感谢大家的评论和回答,我找到了一种打印特定键 or/and 值的方法,即使它们是 type <class 'spacy.tokens.span.Span'>。 也许这对其他也有这个问题的人来说是一个提示:)

key = list(dict_1)[0]
value = list(dict_1.values())[0]
print(key) #Lily
print(value)#20

key1 = list(dict_1)[1]
value1 = list(dict_1.values())[1][0]
print(key1) #Tom
print(value1)#21