d转换元组为数组

Posted fqbqrr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了d转换元组为数组相关的知识,希望对你有一定的参考价值。


假定,​​std.typecons.Tuple​​​,可用​​[tup.expand]​​​从元组造数组.​​[valSeq]​​​搞值序列.
如下搞数组的数组:

auto arrayOfArrays = [ keys, values ];

更通用的:

import std;
//编译慢但是很方便
auto makeTestTuple(int i)
return tuple!("key", "value")((i * 2).to!string,(double(i) / 10).to!string);


void main()
auto tuples = iota(10)
.map!makeTestTuple
.array;

string[] keys;
string[] values;

writeln("命令式:");

foreach (t; tuples)
keys ~= t.key;
values ~= t.value;


writeln(keys);
writeln(values);

writeln("替代方案:");
keys = tuples.map!(t => t.key).array;
values = tuples.map!(t => t.value).array;
writeln(keys);
writeln(values);

writeln("更通用:");
keys = tuples.memberArray!"key";
values = tuples.memberArray!"value";
writeln(keys);
writeln(values);


auto memberArray(string member, T)(T[] tuples)
return tuples.map!(t => mixin("t." ~ member)).array;

第2个程序:

import std;

auto makeTestTuple(int i)
return tuple!("key", "value", "其他")(
(i * 2).to!string,
(double(i) / 10).to!string,
i * i);


mixin template matchingMember(string name, T)
mixin (T.stringof ~ "[] " ~ name ~ ;);


template TupleMemberArrays(T)
alias types = T.Types;
alias fieldNames = T.fieldNames;
enum memberCount = types.length;

struct TupleMemberArrays
static foreach (i; 0 .. memberCount)
mixin matchingMember!(fieldNames[i], types[i]);


this(T[] tuples)
foreach (t; tuples)
static foreach (i; 0 .. memberCount)
mixin (format!q
%s ~= t.%s = t[%s];
(fieldNames[i], fieldNames[i], i));






void main()
auto tuples = iota(10)
.map!makeTestTuple
.array;

alias S = TupleMemberArrays!(ElementType!(typeof(tuples)));
auto s = S(tuples);
writeln(s.key);
writeln(s.value);
writeln(s.其他);

第二个程序定义了​​匹配元组成员​​​的类型.给定成员名为​​"key","value"​​​和​​"其他"​​​的元组;及串,串,整​​类型​​​;生成类似以下​​结构​​:

struct YourAliasHere 
string[] key;
string[] value;
int[] 其他;

限制:该实现使用​​并非​​​所有元组都使用的​​字段名​​​.但在需要时,可更改为生成​​field0,field1​​等.


以上是关于d转换元组为数组的主要内容,如果未能解决你的问题,请参考以下文章

从以元组为键的字典中获取熊猫数据框

JSON序列化以元组为键的字典

如何在 Scala 中以元组为键合并 Maps

以字符串元组为索引的 Pandas DataFrame

如何将带有元组键的 python 字典转换为 pandas 多索引数据框?

Akka HTTP:如何将 Json 格式响应解组为域对象