我正在分析一些文档,这些文档的节是按某种顺序排列的。我需要知道它们的顺序来匹配一些解析目标。现在我有两张单子
possible_seq_1 = [1, '1A', '1B', 2, 3, 4, 5, 6, 7, '7A',
8, 9, '9A', '9B', 10, 11, 12, 13, 14, 15]
possible_seq_2 = [1, '1A', '1B', 2, 3, 4, 5, 6, 7, '7A',
8, 9, '9A(T)', '9B', 10, 11, 12, 13, 14, 15]
我想使用上面列表中的项作为字典的键,该值将引导我进入下一步
my_dict = dict()
aKey = = '_'.join([str(item) for item in possible_seq_1])
my_dict(aKey) = 'something'
因此,当我以后处理某些东西时,我可以简单地测试对象是否匹配字典中的某个键
我的问题是,我将要添加一些未知的数字(现在我有十个选择)到可能的seq(uences)以后我的关键序列到我的代码,因为我在这个消息,然后在我运行代码之前,我必须作出一些改变,以纳入我的新序列。具体来说,我必须在下面增加范围
my_dict = dict()
for sequence in range(1,10,1):
dict_key = '_'.join([str(item) for item in possible_seq_ + str(sequence)
my_dict[dict_key] = something
当我这么做的时候,我想知道Python是否提供了它所知道的对象,因为它们是在代码中定义的。我知道他们的名字是可用的,但我不知道如何获取/引用对象本身
那是我想我能做的
seq_list = [ item for item in globals() if 'possible_seq' in item if type(item) == list ]
但是,我得到一个空列表,这很有趣,因为名称是一个字符串,所以globals给了我一个对象名称的列表-我想要的是实际的对象,而不是这个代码给我的名称
seq_list = [ item for item in globals() if 'possible_seq' in item ]
我承认,当我在研究这个问题时,我意识到更简单的方法是将序列作为列表添加到序列列表中,但现在我对另一种方法感兴趣,只是为了提高我对Python的理解
诀窍在于
globals()
是一个字典,而不是一个列表,所以只要迭代globals()
中的项就只得到它们的名称。由于要检查每个名称中是否有possible_seq
,因此可以使用字典的.items()
方法对名称和对象进行迭代:然而,正如你所猜测的,这不是一个好方法。最好保留一个列表,比如:
见keep data out of your variable names。你知道吗
相关问题 更多 >
编程相关推荐