从键的集合创建Python数组
我需要在Python中创建一个数组或字典,这个数组是基于一个包含键的数组。之前我在PHP的一个解决方案中找到了类似的做法。但可惜的是,我不知道怎么在Python中实现这个。有人能给我一些建议吗?
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)
)
) );
2 个回答
0
x = dict()
for list in (a,b):
if not x.has_key(list[0]):
x[list[0]] = []
x[list[0]] += list[1:]
这段代码是一个占位符,具体内容没有提供。一般来说,代码块通常用来展示一些编程示例或特定的代码片段。在学习编程时,看到这样的代码块,通常意味着你需要查看里面的具体代码来理解它的功能和用法。
如果你有具体的代码内容或者问题,可以分享出来,我可以帮助你更好地理解它!
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'}}}