如果列表具有相同的值,则使用zip将两个列表组合为键值对

时间:2018-02-11 09:10:26

标签: python python-3.x python-2.7 dictionary

我有两个清单:

yy = ['Inside the area', 'Inside the area', 'Inside the area', 'Inside the area', 'Inside the area', 'Inside the area', 'Outside the area']
lat_ = [77.2167, 77.25, 77.2167, 77.2167, 77.2, 77.2167, 77.2]

我正在使用这里的一些帖子给出的解决方案将它们组合在一起:

new_dict = {k: v for k, v in zip(yy, lat_)}
print new_dict

但我的输出是{'Inside the area': 77.2167, 'Outside the area': 77.2}

这种情况正在发生,因为大多数键是相同的。我这样做是因为我想映射这两个列表,以便得到lat的内部或外部的哪些值,然后只保留内部的值。

2 个答案:

答案 0 :(得分:2)

您可以压缩它们并在列表理解中添加一个警卫:

res = [lat for a, lat in zip(yy, lat_) if a.startswith(“Inside”)]

答案 1 :(得分:1)

保持内部的值:

代码:

for k, v in zip(yy, lat_):
    if k.startswith('Inside'):
        inside.append(v)

测试代码:

yy = ['Inside the area', 'Inside the area', 'Inside the area',
      'Inside the area', 'Inside the area', 'Inside the area',
      'Outside the area']
lat_ = [77.2167, 77.25, 77.2167, 77.2167, 77.2, 77.2167, 77.2]

inside = []
for k, v in zip(yy, lat_):
    if k.startswith('Inside'):
        inside.append(v)
print(inside)

结果:

[77.2167, 77.25, 77.2167, 77.2167, 77.2, 77.2167]