我想为字符串列表中的每个元素找到最短的唯一字符组合。每个组合应该至少由字符串的第一个字符和它的两个最稀有的字符组成(如果需要的话可以增加),顺序也很重要。如果一个字符在一个字符串中出现不止一次,它的权重应该更大。你知道吗
考虑以下示例:
liste = ["apple", "pear", "banana", "xylophone", "bear", "banunu"]
combinations = ["apl", "per", "ban", "xyh", "ber", "bnu"
对于apple
,p
和e
总共出现了4次,但是由于p
在apple
中出现了两次,所以应该在组合中使用它。你知道吗
用python编写这个逻辑最有效的方法是什么?你知道吗
你可以这样做:
输出
其思想是创建一个表示每个唯一字母的优先级标准元组。所以
elements
是一个包含元组的列表,表示:counts[c]
:总计数(因为您希望最稀有的数乘以-1)word_count[c]
:单词中字母的具体计数i
:表示字母的第一个位置c
:字母本身。你知道吗创建列表
elements
后:注意,由于字符必须是唯一的,所以我们使用一个集合(
seen
)来保证唯一性。最后,根据上述标准使用heapq.nlargest来获取顶部的n
元素。你知道吗相关问题 更多 >
编程相关推荐