我试图遍历字典列表并根据键和字典索引提取值。
我的目标是将第一个字典中的值分配给变量x1 / y1,然后继续进行操作,并对第二个字典进行相同的操作(x2,y2),然后执行计算。完成计算后,我想对字典2/3进行同样的操作,依此类推,直到我计算出列表中的所有字典。
我被困住了,因为我无法引用字典索引。目前,我的代码仅将值存储在lon1 / lat1中。
lst = [{'lat': 1, 'Time': 1, 'lon': 1},
{'lat': 2, 'Time': 2, 'lon': 2},
{'lat': 3, 'Time': 3, 'lon': 3}]
x1 = ()
x2 = ()
y1 = ()
y2 = ()
for k, v in [(k, v) for x in lst for (k, v) in x.items()]:
if k == 'lon'
x1 = v
elif k == 'lat':
y1 = v
elif k == 'lat':
x2 = v
elif k == 'lon':
y2 = v
编辑:删除了不必要的代码,并试图更简洁地解释我的目标。我之所以选择保留不必要的变量,是因为我需要对这些变量使用固定公式进行计算。
答案 0 :(得分:0)
Dicts是由键访问的(以便在值检索中利用 O(1)的时间复杂性),而不是在搜索键时进行迭代。为了处理滚动对中的列表项,您可以zip
将列表本身偏移1以进行迭代:
for a, b in zip(lst, lst[1:]):
lon1 = a['lon']
lat1 = a['lat']
lon2 = b['lon']
lat2 = b['lat']
# perform your calculations for the pair of dict a and dict b
答案 1 :(得分:0)
也许这会对您的组织有所帮助? print
语句只是为了说明您已正确提取坐标。
lon_lat = []
for point in lst:
lon_lat.append( (lst["lon], lst["lat]) )
print (lon_lat[0])
print (lon_lat[1])
输出:
(1, 1)
(2, 2)
lon_lat
是包含每个位置的lon
和lat
的元组列表。您可以轻松地将它们用于计算。