包含字典的解码列表

2024-07-04 08:47:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从字典列表中获取某些值,看起来像这样,并分配给变量“segment_values”:

[{'distance': 114.6,
  'duration': 20.6,
  'instruction': 'Head north',
  'name': '-',
  'type': 11,
  'way_points': [0, 5]},
 {'distance': 288.1,
  'duration': 28.5,
  'instruction': 'Turn right onto Knaufstraße',
  'name': 'Knaufstraße',
  'type': 1,
  'way_points': [5, 17]},
 {'distance': 3626.0,
  'duration': 273.0,
  'instruction': 'Turn slight right onto B320',
  'name': 'B320',
  'type': 5,
  'way_points': [17, 115]},
 {'distance': 54983.9,
  'duration': 2679.3,
  'instruction': 'Keep right onto Ennstal-Bundesstraße, B320',
  'name': 'Ennstal-Bundesstraße, B320',
  'type': 13,
  'way_points': [115, 675]},
 {'distance': 11065.1,
  'duration': 531.1,
  'instruction': 'Keep left onto Pyhrn Autobahn, A9',
  'name': 'Pyhrn Autobahn, A9',
  'type': 12,
  'way_points': [675, 780]},
 {'distance': 800.7,
  'duration': 64.1,
  'instruction': 'Keep right',
  'name': '-',
  'type': 13,
  'way_points': [780, 804]},
 {'distance': 49.6,
  'duration': 4.0,
  'instruction': 'Keep left',
  'name': '-',
  'type': 12,
  'way_points': [804, 807]},
 {'distance': 102057.2,
  'duration': 4915.0,
  'instruction': 'Keep right',
  'name': '-',
  'type': 13,
  'way_points': [807, 2104]},
 {'distance': 56143.4,
  'duration': 2784.5,
  'instruction': 'Keep left onto S6',
  'name': 'S6',
  'type': 12,
  'way_points': [2104, 2524]},
 {'distance': 7580.6,
  'duration': 389.8,
  'instruction': 'Keep left',
  'name': '-',
  'type': 12,
  'way_points': [2524, 2641]},
 {'distance': 789.0,
  'duration': 63.1,
  'instruction': 'Keep right',
  'name': '-',
  'type': 13,
  'way_points': [2641, 2663]},
 {'distance': 815.9,
  'duration': 65.3,
  'instruction': 'Keep left',
  'name': '-',
  'type': 12,
  'way_points': [2663, 2684]},
 {'distance': 682.9,
  'duration': 54.6,
  'instruction': 'Turn left onto Heinrich-Drimmel-Platz',
  'name': 'Heinrich-Drimmel-Platz',
  'type': 0,
  'way_points': [2684, 2711]},
 {'distance': 988.1,
  'duration': 79.0,
  'instruction': 'Turn left onto Arsenalstraße',
  'name': 'Arsenalstraße',
  'type': 0,
  'way_points': [2711, 2723]},
 {'distance': 11.7,
  'duration': 2.1,
  'instruction': 'Turn left',
  'name': '-',
  'type': 0,
  'way_points': [2723, 2725]},
 {'distance': 0.0,
  'duration': 0.0,
  'instruction': 'Arrive at your destination, on the left',
  'name': '-',
  'type': 10,
  'way_points': [2725, 2725]}]

我需要从代码段中获取持续时间值和航路点值

在我尝试的过程中:

segment_values= data['features'][0]['properties']['segments'][0]['steps'] #gets me the above code
print(segment_values[0:]['duration']) 

这难道不应该打印所有字典,以及每个字典中的持续时间值吗

我也试过:

duration = data['features'][0]['properties']['segments'][0]['steps'][0:]['duration']
print(duration)

两次尝试都给出了“TypeError:列表索引必须是整数或片,而不是str” "

我哪里做错了


Tags: nameright字典typesegmentleftwaypoints
3条回答

您可能会想到像pandas这样的更高级别的包装器,它可以让您这样做

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randn(3, 2), index=list('abc'), columns=list('xy'))
>>> df
          x         y
a -0.192041 -0.312067
b -0.595700  0.339085
c -0.524242  0.946350

>>> df.x
a   -0.192041
b   -0.595700
c   -0.524242
Name: x, dtype: float64

>>> df[0:].x
a   -0.192041
b   -0.595700
c   -0.524242
Name: x, dtype: float64

>>> df[1:].y
b    0.339085
c    0.946350
Name: y, dtype: float64

您的数据是一个字典列表

因此,您需要循环浏览其内容以访问数据。 请尝试此打印语句以更仔细地查看数据:

for item in data_list:
    print(item)

为了访问每个项目的持续时间,您可以使用类似的代码:

for item in data_list:
    print(item['duration'])

您还可以使用列表理解来实现相同的结果:

duration = [item['duration'] for item in data_list]

列表理解是一种获得相同结果的python方法,您可以阅读有关它的更多信息here

如果数据中的某个键包含列表或其他iterable,则可以应用相同的原则两次,下面是另一个示例:

for item in data:
    print("\nPrinting waypoints for name: " + item['name'])
    for way_point in item['way_points']:
        print(way_point)
duration = [x['duration'] for x in segment_values]
waypoints =[x['way_points'] for x in segment_values]

相关问题 更多 >

    热门问题