Найти - Пользователи
Полная версия: возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей
Начало » Python для новичков » возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей
1
gtlhbkkj
из MySQL читаю отвечающие условиям строки таблицы в массив функцией fetchall().
Получается массив из строк. Каждая строка (соответствует одной записи в таблице) состоит из списка строк. Например вот так
 "abcd", "pedro", NULL, "23dss", "asfdsad"      и так далее
"ab2d", "pe111ro", "dsff", "2222ss", "asдодоsad" и так далее
..........
"ab2d", NULL, "dsff", "2222ss", "asдодоsad" и так далее
как можно кратчайшим способом и быстро весь этот обьем запихнуть в один список?
При этом список не должен содержать повторяющихся строк и значений NULL ?
в настоящий момент прогоняю по двум циклам внутри друг друга - медленно тупо нудно и неэффективно.
Спасибо
Rodegast
> список не должен содержать повторяющихся строк

Добавь DISTINCT в SELECT.

 >>> s = [["1", "2", None], ["4", "5", "6"], ["7", "8", None]]
>>> list(reduce(lambda x, y: x + [ z for z in y if z ], s,[]))
['1', '2', '4', '5', '6', '7', '8']
gtlhbkkj
прошу прощения поправка
мой SELECT возвращает в fetchall() несколько подобных строк
 {'ID': 2, 'MET': 0, 'MET1': 2, 'ALL_BEZ': '70589226', 'FG_IDNR': '70589226', 'FG_BEZ': 'P9604D16N2003CC', 'FK_BEZ': None, 'FG': '70589226', 'HYDAC': None, 'REXROTH': None, 'SFFILTER': None, 'PARKER': None, 'STAUFF': None, 'VICKERS': None, 'DONALDSON': 'AVZDE', 'HIFI': None, 'SOFIMA': None, 'FILTREC': None}
как мне значения (VALUES) из этих нескольких строк загнать в простой список без дублирования и без пустых значений типа None ??
чтобы в результате получился
 spisok = ['70589226','P9604D16N2003CC','AVZDE',... ]
gtlhbkkj
вот так тупо частично решил
 x = {'ID': 2, 'MET': 0, 'MET1': 2, 'ALL_BEZ': '70589226', 'FG_IDNR': '70589226', 'FG_BEZ': 'P9604D16N2003CC', 'FK_BEZ': None, 'FG': '70589226', 'HYDAC': None, 'REXROTH': None, 'SFFILTER': None, 'PARKER': None, 'STAUFF': None, 'VICKERS': None, 'DONALDSON': None, 'HIFI': None, 'SOFIMA': None, 'FILTREC': None}
y = x.values()
z = list(y)
a = list(set(z))
b = list(filter(None,a))

получилось
 [2, '70589226', 'P9604D16N2003CC']

в принципе то что нужно

AD0DE412
удалено выше предложение уже использовали
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB