来自FreqDist输出的列表列表

时间:2014-06-04 02:40:40

标签: python list dictionary

我使用FreqDist计算元组列表中每个元组的频率。结果freqdist看起来像这样:

<FreqDist: (1, 3): 3, (1, 4):2, (1, 2): 1...etc.

我想生成一个列表列表,以便输出如下所示:

[[1,3,3], [1,4,2], [1,2,1]...

我做了以下操作但没有用。

list3 = []
for key in combofreqdict:
    temp = list(key)
    temp.extend(value)
    list3.append(temp)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果可以更改FreqDist,可以执行dictonary,或者它可以像一个一样,而不是可以执行以下操作:

import collections


# I used ordered dictionary as example, just to have the same order of items
# as in your question.
list1 = collections.OrderedDict([((1,3),3), ((1, 4),2), ((1, 2), 1)])

list3 = [list(k)+[v] for k,v in list1.items() ]

print(list3)
# [[1, 3, 3], [1, 4, 2], [1, 2, 1]]

顺便说一下,不要将名单列为list。您正在覆盖内置list()函数

答案 1 :(得分:0)

也许这样的事情会起作用:

print combofreqlist #<FreqDist: (1, 1): 2, (1, 3): 2, (1, 4): 2, (1, 5): 2, (2, 1): 1, (2, 5): 1, (3, 2): 1, (3, 3): 1, (4, 2): 1, (4, 5): 1, ...>
list3 = [list(k)+[v] for k,v in combofeqlist.items()]
print list3 #[[1, 1, 2], [1, 3, 2], [1, 4, 2], [1, 5, 2], [2, 1, 1], [2, 5, 1], [3, 2, 1], [3, 3, 1], [4, 2, 1], [4, 5, 1], [5, 2, 1]]

这使用.items()的{​​{1}},然后通过连接元组和最后一项来组合它们。