【发布时间】:2020-10-13 03:20:43
【问题描述】:
我有一个这样的列表:
my_list_of_lists =
[['sparrow','sparrow','sparrow','junco','jay','robin'],
['sparrow','sparrow','junco', 'sparrow','robin','robin'],
['sparrow','sparrow','sparrow','sparrow','jay','robin']]
我想对所有列表的每个位置进行成对比较,列表如下:
#1 with 2
['sparrow','sparrow','sparrow','junco','jay','robin']
['sparrow','sparrow','junco', 'sparrow','robin','robin']
#1 with 3
['sparrow','sparrow','sparrow','junco','jay','robin']
['sparrow','sparrow','sparrow','sparrow','jay','robin']
#2 with 3
['sparrow','sparrow','junco', 'sparrow','robin','robin']
['sparrow','sparrow','sparrow','sparrow','jay','robin']
所以 1 和 2 的对:
pairs =[('sparrow','sparrow'), ('sparrow','sparrow'), ('sparrow','junco'),('junco','sparrow'),('junco','junco'), ('jay','robin'), ('robin','robin')]
我想在每对比较中获得配对的计数和频率:
pairs =[('sparrow','sparrow'), ('sparrow','sparrow'), ('sparrow','junco'),('junco','sparrow') ('junco','junco'), ('jay','robin'), ('robin','robin')]
sparrowsparrow_counts = 2
juncosparrow_counts = 2
jayrobin_counts = 1
robinrobin = 1
frequency_of_combos = [('sparrow', 'sparrow'):.333, ('sparrow', 'junco'):.333, ('jay', 'robin'):.167, ('robin', 'robin'): .167]
我尝试过压缩,但我最终将所有列表(而不是对)压缩成元组,而我对其余部分感到困惑。
我认为它与How to calculate counts and frequencies for pairs in list of lists? 有点相关,但我不知道如何将其应用于我的数据。
【问题讨论】:
-
你压缩了一对字典;使用
collections.Counter结构来计算对。除以总数。现在对三个列表对中的每一个重复此操作。 -
感谢您的快速回复。为确保我正确理解您,我将创建这些列表的字典(即列表字典),然后使用 collections.Counter 为每个列表的每个成对比较计算对。除以总数会给我频率。至于重复,在完整的数据集中,我必须遍历大约 75 个这些列表,所以我会遍历字典。这是正确的解释吗?
-
抱歉 -- 压缩三个 列表 中的一对,而不是新的字典。如果您有 75 个列表,那么我建议您使用
itertools.combinations(list_of_lists, 2)生成列表配对。
标签: python list loops frequency pairwise