Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей [RSS Feed]

#1 Дек. 10, 2019 16:07:03

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей

из MySQL читаю отвечающие условиям строки таблицы в массив функцией fetchall().
Получается массив из строк. Каждая строка (соответствует одной записи в таблице) состоит из списка строк. Например вот так

 "abcd", "pedro", NULL, "23dss", "asfdsad"      и так далее
"ab2d", "pe111ro", "dsff", "2222ss", "asдодоsad" и так далее
..........
"ab2d", NULL, "dsff", "2222ss", "asдодоsad" и так далее
как можно кратчайшим способом и быстро весь этот обьем запихнуть в один список?
При этом список не должен содержать повторяющихся строк и значений NULL ?
в настоящий момент прогоняю по двум циклам внутри друг друга - медленно тупо нудно и неэффективно.
Спасибо

Офлайн

#2 Дек. 10, 2019 16:22:16

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей

> список не должен содержать повторяющихся строк

Добавь 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']



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Дек. 10, 2019 17:25:17

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей

прошу прощения поправка
мой 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',... ]

Офлайн

#4 Дек. 10, 2019 17:55:45

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей

вот так тупо частично решил

 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']

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

Отредактировано gtlhbkkj (Дек. 10, 2019 18:15:30)

Офлайн

#5 Дек. 11, 2019 18:26:09

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей

удалено выше предложение уже использовали



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Дек. 11, 2019 18:37:24)

Офлайн

  • Начало
  • » Python для новичков
  • » возможно ли двухмерный массив (массив строковых списков) загнать в простой список избегая дублирования и пустых записей[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version