Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 4, 2015 21:54:00

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как лучше всего сравнить данные двух циклов?

Доброго времени суток.

Помогите советом.
Есть такой вот код:

for x in range(length):
    rus_name_x = list_w_dicts[x]['rus_name']
    original_name_x = list_w_dicts[x]['original_name']
    production_year_x = list_w_dicts[x]['production_year']
    director_x = list_w_dicts[x]['director']
    scenarist_x = list_w_dicts[x]['scenarist']
    actors_x = list_w_dicts[x]['actors']
    for y in range(x+1, length):
        rus_name_y = list_w_dicts[y]['rus_name']
        original_name_y = list_w_dicts[y]['original_name']
        production_year_y = list_w_dicts[y]['production_year']
        director_y = list_w_dicts[y]['director']
        scenarist_y = list_w_dicts[y]['scenarist']
        actors_y = list_w_dicts[y]['actors']

Некоторые значения в циклах “х” и “y” могут быть None.

Как лучше\оптимальней всего реализовать:
1) чтоб из циклов “х” и “у” вытянуть только те переменные, в которых есть значения\данные (т.е. not None)
2) потом эти переменные отфильтровать так, чтоб они присутствовали и в цикле “х” и в цикле “у”.
На примере:
- в цикле “х” данные (not None) имеют rus_name, production_year и actors
- в цикле “y” данные (not None) имеют rus_name, scenarist и actors,
соответственно нужно “вытянуть” из “х” и “у” - rus_name и actors
3) сравнить между собой значения этих переменных. Если значения между собой совпадают, сделать одно действие, если нет - сделать другое.
?

Спасибо.

Отредактировано TitanFighter (Дек. 4, 2015 21:54:53)

Офлайн

#2 Дек. 4, 2015 22:06:58

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Подскажите, как лучше всего сравнить данные двух циклов?

Откройте для себя удивительный мир itertools

Офлайн

#3 Дек. 4, 2015 22:12:05

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

Подскажите, как лучше всего сравнить данные двух циклов?

TitanFighter
Как лучше\оптимальней всего реализовать
Так от цели зависит. Озвучте. Иначе будем считать что нужен код на разработку которого уйдет минимальное время.
TitanFighter
сравнить между собой значения этих переменных.
Вы что if не знаете как написать?
if (rus_name == actors) and (not rus_name is None):
    do_some()
else:
   do_other()



Отредактировано doza_and (Дек. 4, 2015 22:13:18)

Офлайн

#4 Дек. 4, 2015 22:24:59

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как лучше всего сравнить данные двух циклов?

ayb
Откройте для себя удивительный мир itertools
Спасибо. Потопал открывать.

doza_and
TitanFighter
Как лучше\оптимальней всего реализовать
Так от цели зависит. Озвучте. Иначе будем считать что нужен код на разработку которого уйдет минимальное время.
Перефразирую - подскажите пожалуйста, как лучше всего “в комплексе” решить все 3 пункта? Есть ли какое то подходящее для этого средство?

doza_and
Вы что if не знаете как написать?
if (rus_name == actors) and (not rus_name is None):
do_some()
else:
do_other()
Не… Ну это уже слишком) Ключевые слова тут другие: Как лучше\оптимальней Но это линейно (if имею ввиду).

Отредактировано TitanFighter (Дек. 4, 2015 22:30:01)

Офлайн

#5 Дек. 5, 2015 02:43:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Подскажите, как лучше всего сравнить данные двух циклов?

А где словесное описание задачи?

1. Сначала делаешь словесное описание алгоритма.
2. Потом рисуешь блок-схему по словесному описанию.
3. Потом пишешь псевдокод по блок-схеме.
4. И только потом пишешь код по псевдокоду.

Всё это сначала проделываешь на бумаге, потом - в воображении. Иначе будешь для каждой задачи по 500 кодов писать - и все неправильные.



Офлайн

#6 Дек. 5, 2015 23:22:29

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как лучше всего сравнить данные двух циклов?

doza_and
Вы что if не знаете как написать?
if (rus_name == actors) and (not rus_name is None):
do_some()
else:
do_other()
Прошу прощения. Вы почти были правы Все оказалось гораздо проще, чем я себе изначально представлял
list_w_dicts = [{'rus_name': 'Терминатор',
                 'original_name': 'Terminator',
                 'production_year': None,
                 'director': 'Кэмерон',
                 'actor': 'Schwarz111'},
                
                {'rus_name': 'Терминатор',
                 'original_name': None,
                 'production_year': 2015,
                 'director': 'Кэмерон',
                 'actor': 'Schwarz'}]
compare = []
length = len(list_w_dicts)
for x in range(length):
    for y in range(x+1, length):
        for k,v in list_w_dicts[x].items():
            # отобрали "общие" переменные
            if (v is not None) and list_w_dicts[y][k]:
                combine=(list_w_dicts[x][k], list_w_dicts[y][k])
                compare.append(combine)
print(compare) # [('Schwarz111', 'Schwarz'), ('Кэмерон', 'Кэмерон'), ('Терминатор', 'Терминатор')]
# сравниваем значения переменных
for item in compare:
    if all(x==item[0] for x in item):
        print('fantastish')
    else:
        print('bad')
        break

Отредактировано TitanFighter (Дек. 6, 2015 02:26:35)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version