首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

问两个取值有关问题

2013-06-19 
问两个取值问题python两个问题类似,解决其中一个应该就能解决另一个1.如何简单快速从字典中提取一组值?例

问两个取值问题
python
两个问题类似,解决其中一个应该就能解决另一个
1.如何简单快速从字典中提取一组值?
例如 a={'aaa':[{'bbb':1}{'bbb':2}]} 提取全部'bbb'的值
2.类似地,上述结构如果是json,如何?

xml我倒能用xpath快提

其实现在最大问题是要传参给一个fun来提取,不知道参数怎么写好
[解决办法]
自己定义一个类
把values用自己的类实现?
[解决办法]

def fun_dict(key, dictArr):
    tmp =[]
    for k in dictArr:
        if k == key:
            tmp.append(dictArr[k])
        elif isinstance(dictArr[k], dict):
            tmp = tmp + fun_dict(key, dictArr[k])
        elif isinstance(dictArr[k] , list):
            tmp = tmp + fun_list(key, dictArr[k])
    return tmp
def fun_list(key, listArr):
    tmp = []
    for v in listArr:
        if isinstance(v, dict):
            tmp = tmp + fun_dict(key, v)
        elif isinstance(v, list):
            tmp = tmp + fun_list(key, v)
    return tmp

if __name__ == '__main__':
    a={'aaa':[{'bbb':1},{'bbb':2}]}
    print fun_dict('bbb',a)

是想这样么?
[解决办法]
那你先确定,是要传入个固定path(是/aaa/*/bbb,而不是/ccc/*/bbb),还是说某个层(第二层,第三层,还是第N层)。

引用:
N
我要传入的参数是 /aaa/*/bbb,单纯bbb不能确定是哪一层
Quote: 引用:

def fun_dict(key, dictArr):
    tmp =[]
    for k in dictArr:
        if k == key:
            tmp.append(dictArr[k])
        elif isinstance(dictArr[k], dict):
            tmp = tmp + fun_dict(key, dictArr[k])
        elif isinstance(dictArr[k] , list):
            tmp = tmp + fun_list(key, dictArr[k])
    return tmp
def fun_list(key, listArr):
    tmp = []
    for v in listArr:
        if isinstance(v, dict):


            tmp = tmp + fun_dict(key, v)
        elif isinstance(v, list):
            tmp = tmp + fun_list(key, v)
    return tmp

if __name__ == '__main__':
    a={'aaa':[{'bbb':1},{'bbb':2}]}
    print fun_dict('bbb',a)


是想这样么?

[解决办法]
自己实现一个简易版的xpath,这是你说的旁门左道吗?
[解决办法]
jsonpath:

http://goessner.net/articles/JsonPath/

python jpath:

https://github.com/aruiz/python-jpath/

热点排行