【问题标题】:convert delimited string to hierarchical JSON in python在python中将分隔字符串转换为分层JSON
【发布时间】:2012-04-19 14:10:46
【问题描述】:

如何在 Python 中将分隔字符串转换为分层 JSON? (我看到了solution for a similar question in jQuery。我一直在尝试找到一个 Python 解决方案。)

我们的目标是从一堆 URL 中生成一个分层的 JSON 类别,这些 URL 可能看起来像:

sport/tennis/grandslams  
sport/chess  
sport/chess/players/men  
sport/tennis  
sport/cricket/stadiums  
sport/tennis/players  

【问题讨论】:

  • 解决方案取决于您的输入。你的意见是什么?

标签: python json


【解决方案1】:

你可以用字典来达到这个目的:

initial = ["Fred-Jim","Fred","Fred-Jim-Bob", "Fred-Jim-Jack", "John", "John-Jim"]

result = {}

for item in initial:
    hierarchy = item.split('-')
    local_result = result
    for node in hierarchy:
        local_result = local_result.setdefault(node, {})

print result

会给你:

{
    'John': {
        'Jim': {}
    }, 
    'Fred': {
        'Jim': {
            'Bob': {},
            'Jack': {}
        }
    }
}

【讨论】:

  • 讽刺的是,这正是我在 JS 中所需要的……在 2014 年
【解决方案2】:

您是否正在寻找来自json 模块的json.dumps()

编辑: 哦,好的,我现在得到你。可能是这样的:

#paths is a list of strings containing the paths you are scraping from your site.
hierarchy = {}
for path in paths:
    cursor = hierarchy
    for part in path.split('/'):
        if part not in cursor:
            cursor[part] = {}
        cursor = cursor[part]

【讨论】:

  • 我正在尝试从上面的 url 列表中创建分层格式的数据,然后我可以将其提供给 json.dumps 以便我可以获得分层 json。 jQuery中的这个例子完美地说明了我想要实现的stackoverflow.com/a/6232943/435089
猜你喜欢
  • 2011-09-08
  • 2018-04-19
  • 1970-01-01
  • 2013-09-12
  • 2019-11-18
  • 2012-10-08
  • 2018-12-20
  • 1970-01-01
  • 2021-08-25
相关资源
最近更新 更多