python 2.7:从集合列表创建字典

Posted

技术标签:

【中文标题】python 2.7:从集合列表创建字典【英文标题】:python 2.7 : create dictionary from list of sets 【发布时间】:2015-12-17 15:31:25 【问题描述】:

执行一些操作后,我得到一个 listset 如下:

from pyspark.mllib.fpm import FPGrowth

FreqItemset(items=[u'A_String_0'], freq=303)
FreqItemset(items=[u'A_String_0', u'Another_String_1'], freq=302)
FreqItemset(items=[u'B_String_1', u'A_String_0', u'A_OtherString_1'], freq=301)

我想从这个列表中创建:

    RDD

    字典,例如:

    key: A_String_0 value: 303
    key: A_String_0,Another_String_1 value: 302
    key: B_String_1,A_String_0,A_OtherString_1 value: 301
    

我想继续计算以产生信心和提升

我尝试执行for 循环以从列表中获取每个项目。

问题是这里是否有另一种更好的方法来创建 rdd 和/或列表?

提前谢谢你。

【问题讨论】:

a) 如果需要 RDD,为什么首先要收集 b) 字典中的键应该是什么类? 您确定字典适合您的主节点吗? 关于 collect() 的重要提示,我忘记了。不确定我理解第二条评论 【参考方案1】:

    如果您想要RDD,请不要收集freqItemsets

    model = FPGrowth.train(transactions, minSupport=0.2, numPartitions=10)
    freqItemsets = model.freqItemsets()
    

    你当然可以parallelize

    结果 = model.freqItemsets().collect() sc.parallelize(结果)

    我不确定你为什么需要这个(它看起来像 XY problem 但您可以对收集的数据使用理解:

    tuple(x.items): x.freq for x in result
    

    ",".join(x.items): x.freq for x in result
    

一般来说,如果您想对数据应用进一步的转换,请不要直接在 Spark 中收集和处理数据。

您还应该看看 Scala API。它已经实现了association rules。

【讨论】:

我的海豚是计算MBA的。 FPGrowth 是第一步。之后我会计算 Confidence 和 Lift,所以我需要访问 FPGrowth 的输出。这就是原因。我想如何访问这些项目以进行进一步计算。非常感谢您的帮助!目前我从 Spark 和 PySpark 开始,我理解必须学习 scala :(

以上是关于python 2.7:从集合列表创建字典的主要内容,如果未能解决你的问题,请参考以下文章

Python字符串列表元组字典集合

python全栈开发-列表元祖字典集合-7.13

Python 列表元组字典及集合操作详解

python数据类型—列表元组字典

Python的列表&元组&字典&集合

python列表,元组,字典,集合的比较总结