Answers:
{∪⍵[⍒+⌿∘.≡⍨⍵]}
这是一个带有列表的函数,例如:
names
John Doe Dick Harry Harry Doe Doe Harry Doe John
{∪⍵[⍒+⌿∘.≡⍨⍵]} names
Doe Harry John Dick
说明:
∘.≡⍨⍵
:将数组中的每个元素与数组中的每个其他元素进行比较,得到一个矩阵+⌿
:对矩阵的列求和,给出每个元素出现多少次⍒
:给出向下排序的索引⍵[
... ]
:⍵
按给定索引重新排序∪
:获取独特元素对于Python 3:
f=lambda n:sorted(set(n),key=n.count)[::-1]
对于Python 2:
f=lambda n:sorted(set(n),cmp,n.count,1)
演示:
>>> names = ["John","Doe","Dick","Harry","Harry","Doe","Doe","Harry","Doe","John"]
>>> f(names)
['Doe', 'Harry', 'John', 'Dick']
f=lambda n:sorted(set(n),cmp,n.count,1)
39个字符
cmp
函数和一个key
函数。凉。
f=lambda n:sorted(set(n),key=n.count)[::-1]
Sort[GatherBy@n][[-1;;1;;-1,1]]
{"Doe", "Harry", "John", "Dick"}
(带n = {"John", "Doe", "Dick", "Harry", "Harry", "Doe", "Doe", "Harry", "Doe", "John"}
)
Reverse
,但Sort[GatherBy@n][[-1;;1, 1]]
不起作用:)。有任何想法吗?
与n = {"John", "Doe", "Dick", "Harry", "Harry", "Doe", "Doe", "Harry",
"Doe", "John"}
:
Last/@Gather@n~SortBy~Length//Reverse
{“ Doe”,“ Harry”,“ John”,“ Dick”}
Mathematica V10 +(26):
Keys@Sort[Counts[n],#>#2&]
»
>>
如果您无法处理UTF-8,可以将替换为。我几乎可以肯定它会更短一些,但是Bag
该类的行为(可悲)是相对奇怪的,并且由于它是相对较新的(但它可以计算参数)而并不真正完整。{}
声明一个匿名函数。
{(sort -*.value,pairs bag @_)».key}
样本输出(来自Perl 6 REPL):
> my @names = ("John","Doe","Dick","Harry","Harry","Doe","Doe","Harry","Doe","John")
John Doe Dick Harry Harry Doe Doe Harry Doe John
> {(sort -*.value,pairs bag @_)».key}(@names)
Doe Harry John Dick
f=->a{a.sort_by{|z|-a.count(z)}&a}
(编辑:以前的30个字符的解决方案是函数的主体)
f=->a{a.sort_by{|z|-a.count(z)}&a}
。这样&
做是唯一的。
:a.|{[.]a\-,}$
此代码在堆栈上获取一个数组,并按出现次数降序对其唯一元素进行排序。例如,如果输入数组为:
["John" "Doe" "Dick" "Harry" "Harry" "Doe" "Doe" "Harry" "Doe" "John"]
那么输出数组将是
["Doe" "Harry" "John" "Dick"]
注意:上面的代码是一个简单的语句序列。要将其转换为命名函数,请用花括号将其包装并分配一个名称,如下所示:
{:a.|{[.]a\-,}$}:f;
或者,要将代码转换为完整的程序,该程序从标准输入中读取列表(使用上面显示的列表符号)并将其打印到标准输出中,请在代码前~
添加和追加`
。[.
在这种情况下,可以省略(因为我们知道堆栈上将没有其他内容),因此生成的14个字符的程序将为:
~:a.|{]a\-,}$`
:a
将原始数组的副本保存在变量中,a
以备后用。
.|
计算数组与其自身的集合并集,从而消除重复项的副作用。
{ }$
使用括号内代码计算的自定义排序键对重复数据删除的数组进行排序。此代码获取每个数组元素,使用数组减法将其从保存在中的原始输入数组中删除a
,并计算剩余元素的数量。因此,元素以频率降序排序。
[a\])^
应该等同于[.;]a\-
。按不匹配元素的数量排序是一个不错的主意。
^
折叠重复项,-
不会。(和ITYM (
,不是)
。)[a\](\-
可以工作,但是不会保存任何字符。
如果这适合这里: In sql-server
create table #t1 (name varchar(10))
insert into #t1 values ('John'),('Doe'),('Dick'),('Harry'),('Harry'),('Doe'),('Doe'),('Harry'),('Doe'),('John')
select name from #t1 group by name order by count(*) desc
要么
with cte as
(
select name,count(name) as x from #t1 group by name
)
select name from cte order by x desc
select name from #t1 group by name order by count(*) desc
function R($a){foreach($a as$v)$b[$v]++;arsort($b);return$b;}
演示:
$c = array("John","Doe","Dick","Harry","Harry","Doe","Doe","Harry","Doe","John");
$d = print_r(R($c));
Array ( [Doe] => 4 [Harry] => 3 [John] => 2 [Dick] => 1 )
array_count_values()
……这就是您所需要使用的(包括arsort()
)
array_count_values()
如我所见,它不会删除重复的值,也不会排序它们。
array_count_values
更长的时间?<?$u=array_count_values($_GET);arsort($u);print_r($u);
是54个字节在我看来
f=->n{n.group_by{|i|i}.sort_by{|i|-i[1].size}.map{|i|i[0]}}
样品运行:
irb(main):001:0> f=->n{n.group_by{|i|i}.sort_by{|i|-i[1].size}.map{|i|i[0]}}
=> #<Proc:0x93b2e10@(irb):2 (lambda)>
irb(main):004:0> f[["John","Doe","Dick","Harry","Harry","Doe","Doe","Harry","Doe","John"]]
=> ["Doe", "Harry", "John", "Dick"]
function f(n){m={}
for(i in n){m[n[i]]=m[n[i]]+1||1}
return Object.keys(m).sort(function(a,b){return m[b]-m[a]})}
f=n=>{m={};n.forEach(e=>m[e]=m[e]+1||1);return Object.keys(m).sort((a,b)=>m[b]-m[a])}
。(当前仅在Firefox中使用。)
m[n[i]]=-~m[n[i]]
递增,而在循环主体中不需要{}。
List<string>M(List<string>l){return l.GroupBy(q=>q).OrderByDescending(g=>g.Count()).Select(g=>g.Key).ToList();}
(在一堂课内)
var names = new List<string> {"John", "Doe", "Dick", "Harry", "Harry", "Doe", "Doe", "Harry", "Doe", "John"};
foreach(var s in M(names))
{
Console.WriteLine(s);
}
母鹿
哈里
约翰
迪克
使用LINQ的简单解决方案。
~.\:#/.~
名称存储为一组带框的字符串。
'John';'Doe';'Dick';'Harry';'Harry';'Doe';'Doe';'Harry';'Doe';'John'
┌────┬───┬────┬─────┬─────┬───┬───┬─────┬───┬────┐
│John│Doe│Dick│Harry│Harry│Doe│Doe│Harry│Doe│John│
└────┴───┴────┴─────┴─────┴───┴───┴─────┴───┴────┘
f =: ~.\:#/.~
f 'John';'Doe';'Dick';'Harry';'Harry';'Doe';'Doe';'Harry';'Doe';'John'
┌───┬─────┬────┬────┐
│Doe│Harry│John│Dick│
└───┴─────┴────┴────┘
~.\:#/.~ Input: A
#/.~ Finds the size of each set of identical items (Frequencies)
~. List the distinct values in A
Note: the distinct values and frequencies will be in the same order
\: Sort the distinct values in decreasing order according to the frequencies
Return the sorted list implicitly