所以我是Java的新手,因此我正在通过练习,将我的一个Python程序转换为Java.
我遇到了一个问题,我试图复制行为,从python下面将只返回排序的键(按值),而不是值:
popular_numbers = sorted(number_dict, key = number_dict.get, reverse = True)
Run Code Online (Sandbox Code Playgroud)
在Java中,我做了一些研究,还没有找到一个简单的样本用于n00b,例如我自己或类似的方法.我找到了使用Guava进行排序的示例,但排序似乎返回按键排序的HashMap.
除了上述之外,我在Java中没有找到的关于Python的其他好处之一是能够轻松返回已排序值的子集.在Python中,我可以简单地执行以下操作:
print "Top 10 Numbers: %s" % popular_numbers[:10]
Run Code Online (Sandbox Code Playgroud)
在此示例中,number_dict是键值对的字典,其中键表示数字1..100,值是数字(键)出现的次数:
for n in numbers:
if not n == '':
number_dict[n] += 1
Run Code Online (Sandbox Code Playgroud)
最终结果将是这样的:
十大数字:['27','11','5','8','16','25','1','24','32','20']
为了澄清,在Java中我成功创建了一个HashMap,我已经成功检查了数字并增加了键值对的值.我现在陷入了排序并根据值返回前10个数字(键).
我有一个数据框,显示如下:
issue_key date pkey component case_count
0 1060 2018-03-08 PROJ console,configuration,management 8
1 1464 2018-04-24 PROJ2 protocol 1
2 611 2017-03-31 PROJ None 2
3 2057 2018-10-30 PROJ ha, console 0
Run Code Online (Sandbox Code Playgroud)
我需要将组件列中具有多个值的行拆分为每个组件一行。
完成后,数据框应如下所示:
issue_key date pkey component case_count
0 1060 2018-03-08 PROJ console 8
1 1060 2018-03-08 PROJ configuration 8
2 1060 2018-03-08 PROJ management 8
3 1464 2018-04-24 PROJ2 protocol 1
4 611 2017-03-31 PROJ None 2
5 2057 2018-10-30 PROJ ha 0
6 2057 2018-10-30 PROJ console 0 …Run Code Online (Sandbox Code Playgroud)