我使用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)
有什么想法吗?
答案 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}},然后通过连接元组和最后一项来组合它们。