2015-11-16 2 views
-3

Мне нужно сравнить 2 списка стран, которые я организовал, один по населению и один по области, чтобы он печатал любые страны, которые находятся в том же положении, что и оба списка. до сих пор ничего я пытался привел это только возвращение одной страны, которая имеет ту же позицию в обоих списках, когда должно быть в общей сложности 6Сравнение двух отсортированных списков в python

def coincidingCountries(): 
countries = readCountries() 
for i in range(0,len(countries)): 
     swap = False 
     for j in range(0,len(countries)-(i+1)): 
      if countries[j][1]>countries[j+1][1]: 
       temp = countries[j+1] 
       countries[j+1] = countries[j] 
       countries[j] = temp 
       swap = True 

for i in range(0,len(countries)): 
     smallest = i 
     for j in range(i,len(countries)): 
      if countries[j][2]< countries[smallest][2]: 
       smallest = j 

     temp = countries[i] 
     countries[i] = countries[smallest] 
     countries[smallest] = temp 
+0

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

+0

Просьба предоставить образец ввода и ожидаемый выход для этого входа. Пока неясно. –

+1

звучит как работа для 'zip'. Также - почему вы реализуете то, что похоже на сортировку пузырьков, а не на встроенную сортировку? –

ответ

2

Попробуйте pandas:

import pandas as pd 

pop = ['a', 'b', 'c', 'd', 'e', 'i'] 
area = ['a', 'c', 'b', 'd', 'e', 'f'] 

countries = pd.DataFrame(data = {'pop': pop, 'area': area}) 
print countries[countries['area']==countries['pop']] 

    area pop 
0 a a 
3 d d 
4 e e 

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

1

Действительно, использовать функции python zip (a, b) создает список кортежей (a_i, b_i) для i между 0 и len (a), если оба массива имеют одинаковый размер.

отсортирован (а, ключ) сортирует массив w.r.t ключ, так что-то вроде:

zip(sorted(countries, key=lambda country: country[1]), sorted(countries, key=lambda country: country[2]) 

должен сделать трюк

Как добавил комментатор, вы можете прочитать о списковыхах. http://www.secnetix.de/olli/Python/list_comprehensions.hawk

Что касается почтового индекса и отсортирован, есть взгляд на OFFICAL документы: https://docs.python.org/3.3/library/functions.html

+0

Почему бы не поставить 'zip' внутри понимания списка:' [a для a, b в zip (и т. Д.), Если a == b] '? –

+0

Просто написал эту часть! :) –

Смежные вопросы