我需要在python中基于包含键的数组创建数组/字典。 我找到了equivalent solution in PHP。不幸的是我不知道如何在Python中实现它。 somebdoy可以给我任何提示吗?
a = ['one', 'two', 'three']
b = ['one', 'four', 'six']
我想得到以下结果:
c = {'one': {'two': 'three', 'four': 'six}}
PHP解决方案使用引用。也许这是一个更好的例子:
ar[0] = ['box0', 'border0', 'name']
var[1] = ['box0', 'border0', 'type']
var[2] = ['box0', 'border1', 'name']
var[3] = ['box1', 'border2', 'name']
var[4] = ['box1', 'border0', 'color']
$val = 'value'
在PHP中,结果如下:
$result = array(
'box0' => array(
'border0' => array('name' => $val, 'type' => $val, 'color' => $val),
'border1' => array('name' => $val),
),
'box1' => array(
'border0' => array('color' => $val),
'border2' => array('name' => $val)
)
) );
答案 0 :(得分:2)
PHP答案根据键的路径构造字典。所以这是Python中的等价物:
from collections import defaultdict
def set_with_path(d, path, val):
end = path.pop()
for k in path:
d = d.setdefault(k, {})
d[end] = val
示例:
>>> d = {}
>>> set_with_path(d, ['one', 'two', 'three'], 'val')
>>> d
{'one': {'two': {'three': 'val'}}}
>>> set_with_path(d, ['one', 'four', 'six'], 'val2')
>>> d
{'one': {'four': {'six': 'val2'}, 'two': {'three': 'val'}}}
答案 1 :(得分:0)
x = dict()
for list in (a,b):
if not x.has_key(list[0]):
x[list[0]] = []
x[list[0]] += list[1:]