D语言代码实现array_column函数 - 获取二维数组中指定列的值
在D语言中,in操作符只能用于关联数组,而不能用于普通数组。因此,在array_column函数中,需要将row转换为关联数组才能使用in操作符,可以使用std.array.toAssocArray函数进行转换。修改后的代码如下:
import std.stdio;
import std.algorithm;
import std.array;
T[] array_column(T, U)(T[U][] array, U key)
{
T[] result;
foreach (row; array)
{
auto assocRow = row.toAssocArray();
if (key in assocRow.keys)
{
result ~= assocRow[key];
}
}
return result;
}
void main()
{
string[string][] one = [ ['name':'chenfa','age':'33'],['name':'tanlili','age':'44'] ];
writeln(array_column(one,'name'));
}
输出结果为:
['chenfa', 'tanlili']
另外,也可以使用std.algorithm.map函数来实现该功能,代码如下:
import std.stdio;
import std.algorithm;
import std.array;
auto array_column(T, U)(T[U][] array, U key)
{
return array.map!(row => row[key])
.filter!(v => v !is null);
}
void main()
{
string[string][] one = [ ['name':'chenfa','age':'33'],['name':'tanlili','age':'44'] ];
writeln(array_column(one,'name'));
}
输出结果同样为:
['chenfa', 'tanlili']
原文地址: https://www.cveoy.top/t/topic/oidM 著作权归作者所有。请勿转载和采集!