我有一个字典,每个键都有一个列表作为它的值,这些列表的大小不同。我使用add和set填充键和值(以避免重复)。如果输出字典,则输出为:
blizzard set(['00:13:e8:17:9f:25', '00:21:6a:33:81:50', '58:bc:27:13:37:c9', '00:19:d2:33:ad:9d'])
alpha_jian set(['00:13:e8:17:9f:25'])
在这里,暴雪和阿尔法是我字典里的两个关键。你知道吗
现在,我有另一个文本文件,它有两列,比如
00:21:6a:33:81:50 45
00:13:e8:17:9f:25 59
如您所见,第一列项目是我的字典的每个列表中的一个条目。例如,00:21:6a:33:81:50属于“暴雪”键,00:13:e8:17:9f:25属于“阿尔法剑”键。你知道吗
我想要的问题是,检查文本文件中的第一列项目,如果在dictionary中找到该列条目,则找到相应的键,在dictionary中找到相应列表的长度,并将它们添加到新dictionary中,比如newDict。
例如00:21:6a:33:81:50属于暴雪。因此,newDict条目将是:
newDict[blizzard] = 4 // since the blizzard key corresponds to a list of length 4.
这是我希望执行此任务的代码:
newDict = dict()
# myDict is present with entries like specified above
with open("input.txt") as f:
for line in f:
fields = line.split("\t")
for key, value in myDict.items():
if fields[0] == #Some Expression:
newdict[key] = len(value)
print newDict
在这里,我的问题是什么应该是我上面代码中的某个表达式。如果值不是列表,这非常简单。但是如何在列表中搜索呢?提前谢谢。你知道吗
看起来像
应该会成功的。例如,检查字段是否是集合的成员(这也适用于列表,但至少在列表较大时会慢一点)。你知道吗
(请注意,列表和集合是两种不同的东西;一种是可以包含相同值的多个副本的有序容器,另一种是只能包含每个值的一个副本的无序容器。)
您可能还希望在
newdict
赋值之后添加一个break
,这样就不会一直检查所有其他字典条目。你知道吗没有
解决你的问题?或者我不明白你的问题?你知道吗
你在找
in
但这不是一个非常有效的方法,因为它需要反复扫描dict值
您可以创建一个临时数据结构来帮助
所以你的代码变成
相关问题 更多 >
编程相关推荐