假设我有
var input = new int[] { 0, 1, 2, 3, 4, 5 };
Run Code Online (Sandbox Code Playgroud)
如何将它们分组成对?
var output = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, new int[] { 4, 5 } };
Run Code Online (Sandbox Code Playgroud)
最好使用LINQ
与列表展平相反.
给定列表和长度n返回长度为n的子列表的列表.
def sublist(lst, n):
sub=[] ; result=[]
for i in lst:
sub+=[i]
if len(sub)==n: result+=[sub] ; sub=[]
if sub: result+=[sub]
return result
Run Code Online (Sandbox Code Playgroud)
一个例子:
如果列表是:
[1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
而n是:
3
Run Code Online (Sandbox Code Playgroud)
返回:
[[1, 2, 3], [4, 5, 6], [7, 8]]
Run Code Online (Sandbox Code Playgroud)
有更有说服力/简洁的方式吗?
另外,将列表附加到列表时(在上面的上下文中)首选:
list1+=[list2]
Run Code Online (Sandbox Code Playgroud)
要么:
list1.append(list2)
Run Code Online (Sandbox Code Playgroud)
鉴于此(根据Summerfeild的"Python 3编程"),它们是一样的吗?
谢谢.
对不起,如果以前曾经问过,但我找不到一个很好的例子,说明我想要完成的事情.也许我只是不寻找正确的事情.如果在某处有解释,请纠正我.无论如何...
我有像这样结构的JSON数据......
{"Result":[
{"Level":"ML","TeamName":"Team 1","League":"League 1"},
{"Level":"ML","TeamName":"Team 2","League":"League 2"},
{"Level":"ML","TeamName":"Team 3","League":"League 3"},
{"Level":"3A","TeamName":"Team 4","League":"League 1"},
{"Level":"3A","TeamName":"Team 5","League":"League 2"},
{"Level":"3A","TeamName":"Team 6","League":"League 3"},
{"Level":"2A","TeamName":"Team 7","League":"League 1"},
{"Level":"2A","TeamName":"Team 8","League":"League 2"},
{"Level":"2A","TeamName":"Team 9","League":"League 3"},
]}
Run Code Online (Sandbox Code Playgroud)
我想分组,或者像这样重组...
{"Result":[
{"ML":[
{"TeamName":"Team 1","League":"League 1"},
{"TeamName":"Team 2","League":"League 2"},
{"TeamName":"Team 3","League":"League 3"}
]},
{"3A":[
{"TeamName":"Team 4","League":"League 1"},
{"TeamName":"Team 5","League":"League 2"},
{"TeamName":"Team 6","League":"League 3"}
]},
{"2A":[
{"TeamName":"Team 7","League":"League 1"},
{"TeamName":"Team 8","League":"League 2"},
{"TeamName":"Team 9","League":"League 3"}
]}
]}
Run Code Online (Sandbox Code Playgroud)
我将如何使用Javascript/jQuery实现这一目标?不幸的是我无法编辑服务器发送给我的内容.
我已经设法使用Java 8 Streams API编写解决方案,该解决方案首先按对象组合对象Route列表,然后计算每个组中对象的数量.它返回一个映射Route - > Long.这是代码:
Map<Route, Long> routesCounted = routes.stream()
.collect(Collectors.groupingBy(gr -> gr, Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
而Route类:
public class Route implements Comparable<Route> {
private long lastUpdated;
private Cell startCell;
private Cell endCell;
private int dropOffSize;
public Route(Cell startCell, Cell endCell, long lastUpdated) {
this.startCell = startCell;
this.endCell = endCell;
this.lastUpdated = lastUpdated;
}
public long getLastUpdated() {
return this.lastUpdated;
}
public void setLastUpdated(long lastUpdated) {
this.lastUpdated = lastUpdated;
}
public Cell getStartCell() {
return startCell;
}
public void setStartCell(Cell startCell) …Run Code Online (Sandbox Code Playgroud) 我想把一个人的名单分组.一个人有一些属性,如姓名,国家,城镇,邮政编码等.我写了静态代码,非常有效:
Object groupedData = data.stream().collect(groupingBy(Person::getName, Collectors.groupingBy(Person::getCountry, Collectors.groupingBy(Person::getTown))));
Run Code Online (Sandbox Code Playgroud)
但问题是,这不是动态的.有时我想按名称和城镇分组,有时候按属性分组.我怎样才能做到这一点?非Java 8解决方案也是受欢迎的.
我正在尝试按其字段(即Person.java)对Java对象进行分组
public class Person {
String name;
String surname;
....
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我有n个 Person对象,那么让所有人将"David"命名为地图的最简单方法是Map<String, List<Person>> map;什么?
我在Google上发现了这个(但它没有编译),它似乎是我正在寻找的东西:http: //www.anzaan.com/2010/06/grouping-objects-using-objects-property/
我有一个像这样的数组:
$str=
Array
(
[No] => 101
[Paper_id] => WE3P-1
[Title] => "a1"
[Author] => ABC
[Aff_list] => "University of South Florida, Tampa, United States"
[Abstracts] => "SLA"
)
Array
(
[No] => 101
[Paper_id] => WE3P-1
[Title] => "a2"
[Author] => DEF
[Aff_list] => "University of South Florida, Tampa, United States"
[Abstracts] => "SLA "
)
Array
(
[No] => 104
[Paper_id] => TU5A-3
[Title] => "a3"
[Author] => GHI
[Aff_list] => "University of Alcala, Alcala de Henares, Spain" …Run Code Online (Sandbox Code Playgroud) 在bash中对命令进行分组时,我知道括号()和花括号之间的目的不同.{}
但是为什么花括号构造在最后一个命令后需要分号,而对于括号构造,分号是可选的?
$ while false; do ( echo "Hello"; echo "Goodbye"; ); done
$ while false; do ( echo "Hello"; echo "Goodbye" ); done
$ while false; do { echo "Hello"; echo "Goodbye"; }; done
$ while false; do { echo "Hello"; echo "Goodbye" }; done
bash: syntax error near unexpected token `done'
$
我正在寻找一些有关为何情况的见解.我不是在寻找诸如"因为文档说的那样"或"因为它是按照这种方式设计"的答案.我想知道为什么它的设计是这样的.或者,如果它只是一个历史文物?
至少在以下版本的bash中可以观察到这种情况:
我有一个script指派基于关闭两个值columns中的一个pandas df.下面的代码能够实现第一步,但我正在努力实现第二步.
所以脚本最初应该:
1)分配Person为每个单独的string在[Area]与所述第一3 unique values中[Place]
2)看看重新分配People少于3 unique values
示例.在df下面有6 unique values中[Area]和[Place].但是3 People被分配了.理想情况下,每个2人都会2 unique values
d = ({
'Time' : ['8:03:00','8:17:00','8:20:00','10:15:00','10:15:00','11:48:00','12:00:00','12:10:00'],
'Place' : ['House 1','House 2','House 1','House 3','House 4','House 5','House 1','House 1'],
'Area' : ['X','X','Y','X','X','X','X','X'],
})
df = pd.DataFrame(data=d)
def g(gps):
s = gps['Place'].unique()
d = dict(zip(s, np.arange(len(s)) // …Run Code Online (Sandbox Code Playgroud) 如何通过每个条目限制groupBy?
例如(基于此示例:stream groupBy):
studentClasses.add(new StudentClass("Kumar", 101, "Intro to Web"));
studentClasses.add(new StudentClass("White", 102, "Advanced Java"));
studentClasses.add(new StudentClass("Kumar", 101, "Intro to Cobol"));
studentClasses.add(new StudentClass("White", 101, "Intro to Web"));
studentClasses.add(new StudentClass("White", 102, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 106, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 103, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 104, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 105, "Advanced Web"));
Run Code Online (Sandbox Code Playgroud)
此方法返回简单组:
Map<String, List<StudentClass>> groupByTeachers = studentClasses
.stream().collect(
Collectors.groupingBy(StudentClass::getTeacher));
Run Code Online (Sandbox Code Playgroud)
如果我想限制返回的集合怎么办?让我们假设我只想要每个老师的前N个课程.怎么做到呢?
grouping ×10
java ×4
java-8 ×3
java-stream ×3
collectors ×2
python ×2
.net ×1
arrays ×1
bash ×1
braces ×1
c# ×1
dataframe ×1
dictionary ×1
distinct ×1
ienumerable ×1
javascript ×1
jquery ×1
linq ×1
list ×1
merge ×1
pandas ×1
parentheses ×1
php ×1
sorting ×1
syntax ×1