我有一个嵌套的列表是这样的:Python:获取深度项目? (?设置库)
PLACES = (
('CA', 'Canada', (
('AB', 'Alberta'),
('BC', 'British Columbia' (
('van', 'Vancouver'),
),
...
)),
('US', 'United States', (
('AL', 'Alabama'),
('AK', 'Alaska'),
...
我需要找回一些数据出来。如果depth
是0
我需要检索所有国家(及其代码),如果depth == 1
,我需要检索所有州/省,如果depth == 2
我需要检索所有城市......等等。有没有一些设置库来做这样的事情?或者有人能指出我正确的方向?我开始编写一个解决方案,只意识到它不适用于比1更深的级别,因为您必须进入和退出每个列表...
另请注意,并非所有项目都有第三部分(即,我们假装艾伯塔省没有任何城市,所以在这个有限的场景中,在深度2处检索物品只会返回('van','Vancouver')
)。
我没有意识到这一点,但我也需要父母的价值。所以,我修改interjay的解决方案:
def depth_gen(seq, depth, par=None):
if depth==0:
for x in seq:
yield par, x[0], x[1]
return
for x in seq:
if len(x)==3:
par = x[0]
for y in depth_gen(x[2], depth-1, par):
yield y
我敢用生成一些HTML:
<label for="id-pickup_address-province">Province</label>
<select id="id-pickup_address-province" rel="pickup_address-country" name="pickup_address-province">
<option rel="CA" value="AB">Alberta</option>
<option rel="CA" value="BC">British Columbia</option>
<option rel="CA" value="MB">Manitoba</option>
...
<option rel="US" value="WV">West Virginia</option>
<option rel="US" value="WI">Wisconsin</option>
<option rel="US" value="WY">Wyoming</option>
</select>
<label for="id-pickup_address-country">Country</label>
<select id="id-pickup_address-country" name="pickup_address-country">
<option value="CA">Canada</option>
<option value="US">United States</option>
</select>
然后我就应该根据哪个国家能够很容易地过滤与jQuery列表中选择...
你的问题是有点混乱。 “深度”是什么意思是指你想要提取的元组元组的元组有多深? – wheaties 2010-04-09 20:12:27
@wheaties:是的......深度= 0是第一级(所有国家),深度= 1是第二级(所有州)等等。调用它你想要的,但我需要能够检索这些项目基于它们嵌套的深度。 – mpen 2010-04-09 20:14:23