объединить сложный список вложенных диктов

Обратите внимание на класс «MAIN», в который помещается элемент, например

<div class="container">
     <ul class="select">
         <li> First</li>
         <li>Second</li>
    </ul>
</div>

. В приведенном выше сценарии объект MAIN, который будет наблюдать jQuery, является «контейнером».

Тогда вы в основном будете иметь имена элементов в контейнере, такие как ul, li и select:

$(document).ready(function(e) {
    $('.container').on( 'click',".select", function(e) {
        alert("CLICKED");
    });
 });
-1
задан Ajax1234 28 March 2019 в 16:16
поделиться

1 ответ

Вы можете использовать itertools.groubpy:

import itertools
d = [{'name': 'abc', 'metadata': [{'name': 'foo', 'data': [{'version': '1.0'}]}, {'name': 'foo', 'data': [{'version': '2.0'}]}, {'name': 'bar', 'data': [{'version': '1.0'}]}]}, {'name': 'xyz', 'metadata': [{'name': 'bob', 'data': [{'version': '3.2'}]}, {'name': 'alice', 'data': [{'version': '2.2'}]}]}, {'name': 'xyz', 'metadata': [{'name': 'mike', 'data': [{'version': '3.2'}]}, {'name': 'alice', 'data': [{'version': '2.2'}]}]}]
new_d = [[a, list(b)] for a, b in itertools.groupby(sorted(d, key=lambda x:x['name']), key=lambda x:x['name'])]
result = [{'name':a, 'metadata':[c for j in b for c in j['metadata']]} for a, b in new_d]
final_result = [{**i, 'metadata':[c for d, c in enumerate(i['metadata']) if all(a != c for a in i['metadata'][:d])]} for i in result]
<час>
import json
print(json.dumps(final_result, indent=4))

Выход:

[
  {
    "name": "abc",
    "metadata": [
        {
            "name": "foo",
            "data": [
                {
                    "version": "1.0"
                }
            ]
        },
        {
            "name": "foo",
            "data": [
                {
                    "version": "2.0"
                }
            ]
        },
        {
            "name": "bar",
            "data": [
                {
                    "version": "1.0"
                }
            ]
        }
    ]
},
{
    "name": "xyz",
    "metadata": [
        {
            "name": "bob",
            "data": [
                {
                    "version": "3.2"
                }
            ]
        },
        {
            "name": "alice",
            "data": [
                {
                    "version": "2.2"
                }
            ]
        },
        {
            "name": "mike",
            "data": [
                {
                    "version": "3.2"
                }
            ]
         }
      ]
   }
]
0
ответ дан Ajax1234 28 March 2019 в 16:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: