从键的集合创建Python数组

0 投票
2 回答
641 浏览
提问于 2025-04-17 18:35

我需要在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'}}}

撰写回答