Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 10, 2017 00:25:37

ramzai
Зарегистрирован: 2017-08-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

Есть таблица xls, где левый и правый столбец равнозначны.
Как пример:
А В
BKR KRB

Задача для бота: при вводе значения из левого столбца он выдавал значение из правого и наоборот. Это некий словарь слов. Подскажите как реализовать данную функцию.

Офлайн

#2 Авг. 10, 2017 04:21:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

 # сначала перенести данные в питон
data=[["A","B"],["C","D"]]
# Определяем сущьность которая может выполнять действия get_left get_right 
class Tbidict:
     def __init__(self,d):
         self.L = {}
         self.R = {}
         for i,j in d:
             self.L[j] = i
             self.R[i] = j
    def get_left(self, v):
         return self.L[v]
    def get_left(self, v):
         return self.R[v]
# создаем экземпляр сущьности и пользуемся им
d = Tbidict(data)
print(d.get_left("B"))
print(d.get_right("A"))



Отредактировано doza_and (Авг. 10, 2017 04:22:24)

Офлайн

#3 Авг. 10, 2017 09:09:20

Vintets
Зарегистрирован: 2016-07-05
Сообщения: 41
Репутация: +  6  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

Не работает. Ночью писать нельзя, появляются два метода get_left

Вопрос был несколько другой, он не знает слева входные данные или справа, ему без разницы.

Предлагаю простое

 # сначала перенести данные в питон
data = [['A','B'], ['BKR','KRB']]
# создаём словарь комбинаций 
d = {}
for i, j in data:
    d[i] = j
    d[j] = i
print(d['BKR'])
print(d['KRB'])
print(d['B'])

Отредактировано Vintets (Авг. 10, 2017 09:13:15)

Офлайн

#4 Авг. 10, 2017 12:14:05

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

интересно и что же случится если попадутся такие данные
A B
B C



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Авг. 10, 2017 12:34:50

Vintets
Зарегистрирован: 2016-07-05
Сообщения: 41
Репутация: +  6  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

интересно и что же случится если попадутся такие данные
A B
B C

А сама постановка задачи должна исключать такие входные данные.
Или задающий должен для себя решить что ему нужно в этом случае.

Отредактировано Vintets (Авг. 10, 2017 12:35:11)

Офлайн

#6 Авг. 10, 2017 19:58:48

ramzai
Зарегистрирован: 2017-08-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

JOHN_16
интересно и что же случится если попадутся такие данныеA BB C
в левом и правом столбце будут разные данные
это таблица кроссов первого столбца в правый

Офлайн

#7 Авг. 11, 2017 00:33:38

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

ramzai
это таблица кроссов первого столбца в правый
Да? А в начале топика сказано другое. То есть вы автор сами не знаете чего хотите? Мило.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Авг. 11, 2017 07:55:25

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

ramzai
в левом и правом столбце будут разные данные
Вы идете в правильном направлении, уточняете спецификацию.
Но значение в для заданной строки левом столбце и в правом всегда разные для данных вида
 A B
B C
Вы напишите что должно получиться в этом конкретном случае.
Вам привели 2 варианта. Вы их поняли, какой вам больше подходит?

ramzai
это таблица кроссов первого столбца в правый
:) Задача похоже еще более интересная. столбцов похоже 3. первый,левый, правый



Отредактировано doza_and (Авг. 11, 2017 07:58:02)

Офлайн

#9 Авг. 20, 2017 20:24:03

ramzai
Зарегистрирован: 2017-08-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

Загрузил файл.
Задача:
При вводе значения из столбца D или E, выводило результат из столбца B+C
Как пример:
Ввели ITR4A15 либо 5599, выдает результат: ACDelco 41-101
и бывает так: 3951 либю TR55, предлагает правильный кросс ответ сразу в трех строчках, надо чтобы это так же выводило, как при первом варианте

Прикреплённый файлы:
attachment CrossRef.xls (39,5 KБ)

Офлайн

#10 Авг. 20, 2017 21:43:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Функция таблицы-словарь в Python

Вам подойдет вариант Vintets. Только замените значение в словаре на то что вам нужно. Если конечно вы гарантируете уникальность ключей в обоих колонках.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version