比较Python中的两个列表项
问题描述:
我有两个文件,我加载到列表中。第一个文件的内容是这样的:比较Python中的两个列表项
d.complex.1
23
34
56
58
68
76
.
.
.
etc
d.complex.179
43
34
59
69
76
.
.
.
etc
第二个文件的内容也是相同的,但具有不同的数值。请考虑从一个d.complex。*到另一个d.complex。*作为一个集合。
现在我有兴趣将一组第一个文件中的每个数值与第二个文件中各组的数值进行比较。我想记录每个数字出现在第二个文件中的次数。
例如,d.complex.1中的数字23可能在文件2中出现了5次不同的集合。我想要做的就是记录文件2中包含所有文件2的编号23的出现次数。
我最初的方法是将它们加载到列表中并进行比较,但我无法实现此目的。我在谷歌搜索,遇到集,但作为一个蟒蛇noob,我需要一些指导。谁能帮我?
如果您觉得问题不清楚,请告诉我。我也粘贴完整的文件1和文件2浏览:
答
首先创建其中可以加载一个给定文件中的函数,你可能要保持个人组,也想算的发生每个数字,最好是有一个整个文件的字典,其中的键是设置名称,例如complex.1等,为每个这样的组保持另一个字典中数字的设定,下面的代码说明它更好
def file_loader(f):
file_dict = {}
current_set = None
for line in f:
if line.startswith('d.complex'):
file_dict[line] = current_set = {}
continue
if current_set is not None:
current_set[line] = current_set.get(line, 0)
return file_dict
现在你可以很容易地编写一个函数,将给出file_dict算一个数
def count_number(file_dict, num):
count = 0
for set_name, number_set in file_dict.iteritems():
count += number_set.get(num, 0)
return count
例如这里是一个使用例
s = """d.complex.1
10
11
12
10
11
12"""
file_dict = file_loader(s.split("\n"))
print file_dict
print count_number(file_dict, '10')
输出是:
{'d.complex.1': {'11': 2, '10': 2, '12': 2}}
2
您可能必须改进文件加载器,例如跳过空行,转换为int等
那么,如果它是一个文件,我的任务会很容易,但我必须比较两个列表:( – forextremejunk 2010-03-02 15:36:42
我不明白,为什么你不能加载这两个文件,得到他们的字典,做你所做的一切想要用那些词典,比较,统计整数,相交集等等 – 2010-03-03 03:34:25