Идея концепции: вложенная итерация может быть сложной - PullRequest
0 голосов
/ 28 ноября 2018

Моя идея довольно проста, мне нужны указатели, критика, критика и т. Д.

Я понимаю, что можно перебирать определенные типы данных, что прекрасно и является фундаментальным для любого языка программирования.Но там, где вам потребуется вложенный цикл (возможно, для сравнения) или в моем случае, чтобы создать более простой и аккуратный способ цикла for, в котором будут две следующие итерируемые элементы.

Мы знаем, что Python может ожидатьопределенное количество значений, например

for key in dictionary_data:
    # do some stuff with it
    pass

Python здесь ожидает, что одно значение будет распаковано в левую переменную из правой переменной, пока, ну, я полагаю, оно не поймает StopIteration или что-то в фоновом режиме.

Мы также знаем, что цикл Python for может обрабатывать более одного значения распаковки, например:

for key, index in enumerate(dictionary_data):
    # do some more cool stuff
    pass

Но давайте рассмотрим пример строки JSON (или объекта), которая предназначена для всех намерений иЦели словарь.Что если у нас есть две строки JSON, которые мы хотим сравнить?И перед тем, как приступить к умному поиску Алека, нет, if JSONString1 == JSONString2 не подходит, потому что мне нужно сравнить отдельные поля в каждой из строк JSON, чтобы сопоставить различия между каждой версией строки JSON.Например, в версиях 1 и 2 есть эти различия, X было добавлено, а Y было удалено.

Я также понимаю, что все словари, строки JSON и т. Д. Имеют встроенные функции для прямого доступа к значениям.ключей (.items()), но, как правило, это не работает для вложенных или двойных вложенных строк json, и вам нужно будет поместить цикл for в nth число вложений в строке json (если имеется 5 уровнейвложенности в строку JSON, 5 или 6 для циклов необходимы).

Мне это кажется довольно задом наперед и контрпродуктивным, так что здесь самое длинное и короткое из всего этого;

существует ли что-нибудь, что уже может определить, сколько уровней вложенности присутствует в строке json (или словаре python)?Кроме того, после обнаружения он может извлечь ключи и значения из объекта Python для последующего сравнения?

Пока что это то, с чем я работаю, но это был просто концептуальный дизайн идеи, и никтоозначает, что закончено, ни проверено должным образом.

import json

js = '{"list":{"entry":[{"recordId":2,"deleted":0,"createdBy":"user.name","created":1542038309023,' \
     '"id":"6e526a31-0e42-4fd9-8a0f-416e12354562", "fields":{"inuseby":"otheruser.name","returndate":1542240000000, ' \
     '"sensor":"93b33535-6273-40a9-a7c3-45dd6a87d4b4","startdate":1541980800000,"class":"fields","version":1,' \
     '"SATstatus":"error"},"ownedBy":"user.name"}]}}'


jsl = json.loads(js)

class JSONHookers(object):

    def __init__(self):
        self.js = js
        self.jsl = json.loads(js)
        if self.jsl:

            for key, value in jsl.items():
                self.__dict__[key] = value
                for k, v in value.items():
                    self.__dict__[k] = v
                    for entries in v:
                        self.__dict__['entry'] = entries
                        print('Key: {}\nHas value/s of\n{}\n'.format('fields', fields))


if __name__ == '__main__':
    jh = JSONHookers()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...