如何控制给定元素与另一个元素或在给定位置的出现频率?

问题描述

假设我有两个列表:

select array_agg(login_id) filter (where sender_id = 111) as sender_111,array_agg(login_id) filter (where sender_id = 222) as sender_222
from invite i
where sender_id in (111,222) and is_valid;

   

,想要创建几个(例如5个)元组列表,并确定其中的字符数(根据char_list = ['a','b','c','d','e','f','g','h','i','j','k','l'] n_list = [3,2,1,3] ),但我还想控制两件事:

  • 给定字符与尖角字符的出现频率
  • 尖头元组中给定字符的出现频率

例如,我不想看到n_list元组中有'd',并且'e'必须“经常”出现(对于本示例来说,超过50%)出现在第三行中元组(根据'k'将是1元素长元组):

n_list

满足第一个条件是因为每个列表中都没有lists_of_tuples = [(a,b,c),('d','j'),('k'),('g','h'),('i'),('e','l')] [(e,i,l),('h','f'),('g'),'a'),('b'),('j','c')] [(a,c,i),'e'),'l'),('d'),('b','j')] [(d,('i','k'),('a'),'g')] [(h,l,j),('f','d'),('a',('c'),'i')] 'd'元组,并且也满足了第二个条件,因为'e'出现在至少三个列表中(超过50% )在给定的元组(第三个)中。

我知道有一个带有权重参数的函数'k',该函数可以对每个值的可能性进行加权,但是说实话,我不知道它如何对我的问题有所帮助。

我希望我已经以易于理解的方式解释了我想要实现的目标。如果没有,请提出问题。我会很乐意回答他们!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)