我正在多部分地处理python map / reduce。
我的第一张地图打印到标准输入,以便第一张缩小可以拾取它。
地图结果如下:
frozenset([4]) 14
Reduce读取frozenset([4])
作为键,并读取14
作为值。
如何从键中仅提取[4]传递给reduce的输出?该地图如下所示:
import sys
data = sys.stdin.read()
dataset = []
for line in data.splitlines():
dataset.append(map(int, line.strip().split(" ")))
c1 = []
for transaction in dataset:
for item in transaction:
if not [item] in c1:
c1.append([item])
candidates = map(frozenset, c1)
sscnt = {}
for tid in dataset:
for can in candidates:
if can.issubset(tid):
sscnt.setdefault(can, 0)
sscnt[can] += 1
for key,val in sscnt.items():
print key, val
减少看起来像这样:
import sys
min_support = 12
sscnt = {}
for input_line in sys.stdin:
input_line = input_line.strip()
key, value = input_line.split(" ")
key = int(key)
sscnt[key] = int(value)
retlist = []
for key in sscnt:
support = sscnt[key]
if value >= min_support:
retlist.insert(0, key)
print retlist
reduce的输出看起来像这样:
['frozenset([1])', 'frozenset([4])', 'frozenset([2])']
输入数据如下:
1 2 3 5 8
2 3 4 7
1 2 4 5 7
1 2 4 6 7
1 2 3 4 5
1 2 4 5 6
1 2 4 6 9
1 2 4 8
3 5 6 8
1 2 4 7
1 2 4 5
1 2 4 9
3 5 6 9
1 2 4 7
3 5 6
1 2 4 8
1 5 6
3 5 9
1 2 4 6
4 5 6 7
eval
对您有用吗?
签名:eval(来源,全局变量=无,本地变量=无,/)
文档字符串:在全局变量和局部变量的上下文中评估给定的源。
list(eval('frozenset([1])'))
返回:
[1]