如何从通过python转换为字符串的冻结集中提取值?

问题描述 投票:0回答:1

我正在多部分地处理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
python mapreduce frozenset
1个回答
0
投票

eval对您有用吗?

签名:eval(来源,全局变量=无,本地变量=无,/)

文档字符串:在全局变量和局部变量的上下文中评估给定的源。

list(eval('frozenset([1])'))

返回:

[1]

© www.soinside.com 2019 - 2024. All rights reserved.