Слияние неравномерных соответствующих элементов из метода, возвращающего значение в словарях - PullRequest
0 голосов
/ 17 декабря 2018

Как отсортировать данные, которые хранятся в глобальном списке, после вставки их в метод;так что, прежде чем они укладываются в другой список в соответствии с их вставленными элементами?Или это плохая практика, которая усложняет хранение данных в глобальном списке, а не в отдельном методе;и, наконец, сортировать их после этого?

Ниже приведен пример сценария

list= []
dictionary = {}

def MethodA(#returns title):
#searches for corresponding data using beautifulsoup
#adds data into dictionary
# list.append(dictionary)
# returns list


def MethodB(#returns description):
#searches for corresponding data using beautifulsoup
#adds data into dictionary
# list.append(dictionary)
# returns list

Пример требуемого вывода

MethodA():[title] #scraps(text.title) data from the web
MethodB():[description] #scraps(text.description) from the web
#print(list)
>>>list=[{title,description},{title.description},{title,description},{title.description}]

Фактический вывод

MethodA():[title] #scraps(text.title) data from the web
MethodB():[description] #scraps(text.description) from the web
#print(list)
>>>list =[{title},{title},{description},{description}]

Есть несколько примеров, которые я видел;например, используя Numpy и сортируя их в массиве: -

arraylist = np.array(list)
arraylist[:, 0]
#but i get a 'too many indices for array'- 
#because I have too much data loading in; including that some of them 
#do not have data and are replaced as `None`; so there's an imbalance of indexes.

Я пытаюсь сохранить его как можно более модулированным.Я пытался использовать норму итерации;

но это довольно сложно, потому что мне нужно добавить в него больше циклов;

Я пробовал Numpy и Enumerate, но я не могу понять, как с этим работать.Но потому что это несбалансированный список;Это означает, что некоторые значения возвращаются как None, что дает мне ошибку возврата;all the input array dimensions except for the concatenation axis must match exactly

Пример: ({'Toy Box','Has a toy inside'},{'Phone', None }, {'Crayons','Used for colouring'})

Обновление;Пример кода метода A

def MethodA(tableName, rowName, selectedLink):
    try:
        for table_tag in selectedLink.find_all(tableName, {'class': rowName}):
            topic_title = table_tag.find('a', href=True)
            if topic_title:
                def_dict1 = {
                    'Titles': topic_title.text.replace("\n", "")}
                global_list.append(def_dict1 )
        return def_dict1 
    except:
        def_dict1 = None

1 Ответ

0 голосов
/ 18 декабря 2018

Если у вас есть что-то в форме:

x = [{'a'}, {'a1'}, {'b'}, {'b1'}, {'c'}, {None}]

, вы можете сделать:

dictionary = {list(k)[0]: list(v)[0] for k, v in zip(x[::2], x[1::2])}

или

dictionary = {s.pop(): v.pop() for k, v in zip(x[::2], x[1::2])}

Второй метод очистит ваши сетыв x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...