我正在尝试解析一些 JSON,它是 AWS CLI 命令的输出以显示快照。我想将这些数据加载到电子表格中,以便能够对其进行过滤、分组和审核。
我一直困惑于如何将嵌套的 Tags 数组展平到父对象中,以便可以将中间对象传递到 @csv 过滤器。
这是示例:
初始输入 JSON:
{
"Snapshots": [
{
"SnapshotId": "snap-fff",
"StartTime": "2014-04-01T06:00:13.000Z",
"VolumeId": "vol-fff",
"VolumeSize": 50,
"Description": "desc1",
"Tags": [
{
"Value": "/dev/sdf",
"Key": "device"
},
{
"Value": "a name",
"Key": "Name"
},
{
"Value": "Internal",
"Key": "Customer"
},
{
"Value": "Demo",
"Key": "Environment"
},
{
"Value": "Brand 1",
"Key": "Branding"
},
{
"Value": "i-fff",
"Key": "instance_id"
}
]
},
{
"SnapshotId": "snap-ccc",
"StartTime": "2014-07-01T05:59:14.000Z",
"VolumeId": "vol-ccc",
"VolumeSize": 8,
"Description": "B …Run Code Online (Sandbox Code Playgroud) 我了解了新Array.flat方法,并认为我会用它来尝试一下,但返回的类型不是所需的。
const hello = [1, 2, [3], [[4]]]
const x = hello.flat(Infinity)
Run Code Online (Sandbox Code Playgroud)
这将x的类型设置为:
const x: (number | number[] | number[][])[]
Run Code Online (Sandbox Code Playgroud)
我怎样才能拥有这个呢number[]?
我试图将一个 S 表达式列表转换为一个简单的原子列表,类似于The Little Schemer一书中的问题。
我的代码是(在 Dr.Racket 中输入):
> (define lat '((coffee) cup ((tea) cup) (and (hick)) cup))
> (define f
(lambda (lat)
(cond
((null? lat) (quote ()))
((atom? (car lat)) (cons (car lat) (f (cdr lat))))
(else (cons (f (car lat)) (f (cdr lat)))))))
> (f lat)
'((coffee) cup ((tea) cup) (and (hick)) cup)
Run Code Online (Sandbox Code Playgroud)
上面的代码返回与输入列表相同的列表。我尽力了,但得到了不同的答案,例如:
(coffee)
(cup . cup)
( () (()) (()) )
Run Code Online (Sandbox Code Playgroud)
用于程序中的各种修改。
我想知道,我们能不能得到答案:
'(coffee cup tea cup and hick cup)
Run Code Online (Sandbox Code Playgroud)
给予
'((coffee) …Run Code Online (Sandbox Code Playgroud) 我对有关此功能的文档/提供的使用示例感到有些困惑。是否flatten只能发生一次?喜欢
List(List(1, 2), List(3, List(4, 5, 6))) -> List(1, 2, 3, List(4, 5, 6))
Run Code Online (Sandbox Code Playgroud)
或者您以某种方式指定展平的深度,以便它可以成为List(1, 2, 3, 4, 5, 6)?
因为,例如,在 JS 中,函数似乎可以flat()进入一维数组的任何深度。Scala 能flatten做到这一点还是只能提升一次?
我正在尝试自己重新创建该功能,并希望模仿所需的行为并了解其工作方式可能不同的原因。
所以我一直在考虑在lisp中展平列表.
但是,我想要做的是逐级压缩列表.
所以没有
(flatten '(a (b (d (g f))) e)) = (a b d g f e)
我想要
(flatten '(a (b (d (g f))) e)) = (a b (d (g f )) e )
关于如何做这个家伙的任何想法?
非常感谢=)
我正在从YAML文件加载配置.
我有一个看起来像这样的哈希: {:first=>{:abc=>[["one", "two", "three"]], :def => [["one", "two", "three"]]}, :second=>{:abc=>[["one", "two", "three"]]}}
但我想得到:
{:first=>{:abc=>["one", "two", "three"], :def => ["one", "two", "three"]}, :second=>{:abc=>["one", "two", "three"]}}
Run Code Online (Sandbox Code Playgroud)
即展平端阵列.结构不会比这里显示的任何"更深".
单行代码是首选.
我有一些数据,如下所示
"ID","PROD"
"1001658",6619
"100288",11843
"100288",20106
"1004303",921
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为类似的格式
"ID","PROD_6619","PROD_11843","PROD_20106","PROD_921"
"1001658",1,0,0,0
"100288",0,1,1,0
"1004303",0,0,0,1
Run Code Online (Sandbox Code Playgroud)
基本上,原始数据集中PROD列中的每个值都在它自己的单独列中.请注意,上面的数据集只是一个示例,我不能硬编码为"PROD_6619","PROD_11843","PROD_20106","PROD_921".它可能会更多.
我尝试使用for循环迭代地编写这个,对于我庞大的数据集来说它非常慢.
你能在R中建议我一个替代方案
我想生成一个两个Int元组的Vector.现在,我做如下:
(0 until 100).map(x => (x+1 until 100).map(y => (x,y))).flatten.filter { ... }
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更有效的方法来做到这一点.我觉得"扁平化"会减慢代码的速度.我必须使用"展平"还是可以使用其他东西?
PS1:如果我不使用"flatten",我有:Vector(Vector(a,b),Vector(c,d),...)而不是Vector((a,b),(c,d) ,...).
PS2:我在第二个生成器中使用(x + 1到100)因为我对元组(a,b)和(b,a)不感兴趣.
我正在用顺序模型研究keras。
model = Sequential()
model.add(Embedding(max_features, 128, input_length=text_max_words))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)
Flatten在这里做什么?
我有一个现有的dict,它将单个值映射到列表.我想反转这个字典并从原始键上的每个列表条目映射.列表条目是唯一的.
鉴于:
dict { 1: ['a', 'b'], 2: ['c'] }
Run Code Online (Sandbox Code Playgroud)
结果:
dict { 'a' : 1, 'b' : 1, 'c' : 2 }
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?