undercutvirus
undercutvirus

Reputation: 3

How to convert Record to Table in Nushell?

I found how to convert Table to Record using the following code here.

let fruits_original = [[key, value]; [apple 10] [banana 42] [mango 5]]
let fruits = $fruits_original | reduce -f {} {|it, acc| $acc | upsert $it.key $it.value }
$fruits == { "apple": 10, "banana": 42, "mango": 5 }
# output is true

But how can I convert it back?

let fruits_original = { "apple": 10, "banana": 42, "mango": 5 }
# TODO: convert Record to Table
$fruits == [[key, value]; [apple 10] [banana 42] [mango 5]]

I'm trying to convert Record to Table to access the values of it (treat as key-value pairs).

Thanks for your help.

Upvotes: 0

Views: 240

Answers (1)

pmf
pmf

Reputation: 36391

You could use transpose to convert in both directions. For the first one, table to record, use the --header-row and --as-record (or -r and -d) flags. For the second one, provide key and value as column names:

let fruits_original = [[key, value]; [apple 10] [banana 42] [mango 5]]
let fruits = $fruits_original | transpose -rd
$fruits == { "apple": 10, "banana": 42, "mango": 5 }
# output is true
let fruits_original = { "apple": 10, "banana": 42, "mango": 5 }
let fruits = $fruits_original | transpose key value
$fruits == [[key, value]; [apple 10] [banana 42] [mango 5]]
# output is true

Upvotes: 1

Related Questions