x= [0,2,3,5,6];
y= [64,384,1024,4096,384];
以上是我正在使用的两个阵列。我试图以pythonic的方式将元素匹配在一起
示例:
如果xType
为2,我想计算一个名为yType
的变量,以对应y中的值(位置明智)。所以我应该y = 384
。如果xType = 3
我应该得到1024。
我将如何做到这一点
答案 0 :(得分:6)
如果您的具体目标是从您提供的两个列表中生成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)]
答案 1 :(得分:5)
这是如此之短,即使Stack Overflow也不允许我提交这么简短的答案:
y[x.index(2)]
这将返回y
对应于2
位置的元素或x
列表中的任何其他给定值。
希望它有所帮助:)
聚苯乙烯。确实dictionaries可能是你需要的东西。尝试使用它们。
答案 2 :(得分:3)
如果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
如果您想进行大量查找,这很有用,但如果您只想进行一次查找Tadeck's answer效率更高
答案 3 :(得分:2)
a = {0: 64, 2:384, ...}
查找'python中的地图'或类似的内容
答案 4 :(得分:2)
>>> xymap = dict(zip(x, y))
>>> xymap[2]
384
但是,如果您还需要在x中查找y的元素,那么您还需要yxmap
。如果您出于某种原因需要将这些列表作为列表(可能是因为您在程序过程中对其进行了修改),则可以使用i = x.index(2)
然后使用y[i]
。