Python, соответствующий двум элементам списка - PullRequest
1 голос
/ 08 июля 2011
x= [0,2,3,5,6];
y= [64,384,1024,4096,384];

Выше приведены два массива, которые я использую.Я пытаюсь сопоставить элементы вместе питоническим способом

пример:

если xType равно 2, я хочу вычислить переменную с именем yType, чтобы соответствовать ее значению (в зависимости от позиции)в г.поэтому я должен получить y = 384.если xType = 3 я должен получить 1024.

Как бы я поступил так

Ответы [ 5 ]

6 голосов
/ 08 июля 2011

Если вашей конкретной целью является генерирование dict из двух указанных вами списков, используйте zip:

>>> x = [0,2,3,5,6]
>>> y = [64,384,1024,4096,384]
>>> dict(zip(x, y))
{0: 64, 2: 384, 3: 1024, 5: 4096, 6: 384}

И избавься от этих точек с запятой!

Если вам не нужен тип отображения, а вы просто хотите создать пары элементов, zip в одиночку подойдет:

>>> zip(x, y)
[(0, 64), (2, 384), (3, 1024), (5, 4096), (6, 384)]
5 голосов
/ 08 июля 2011

Это так коротко, даже переполнение стека не позволило мне отправить такой короткий ответ:

y[x.index(2)]

Это вернет элемент из y, соответствующий позиции 2 или любому другому заданному значению из списка x.

Надеюсь, это помогло:)

Ps. Действительно словари могут быть чем-то, что вам нужно. Попробуйте использовать их.

3 голосов
/ 08 июля 2011

Если элементы в x уникальны, вы можете использовать их в качестве ключей в dict для поиска элементов в y, имеющих тот же индекс.Например:

x = [0,2,3,5,6]
y = [64,384,1024,4096,384]

y_from_x = dict(zip(x,y))

print y_from_x[2] # prints 384
print y_from_x[3] # prints 1024

Это полезно, если вы хотите сделать много поисков, но если вы хотите сделать только один поиск ответ Тадека более эффективен

2 голосов
/ 08 июля 2011
>>> xymap = dict(zip(x, y))
>>> xymap[2]
384

Однако, если вам также нужно искать элементы по x для y, вам также понадобится yxmap.И если вам нужно, чтобы они были списками по какой-то причине (возможно, потому что вы изменяете их в ходе вашей программы), вы можете использовать i = x.index(2), а затем y[i].

2 голосов
/ 08 июля 2011
a = {0: 64, 2:384, ...}

посмотрите «карты в питоне» или что-то в этом роде

...