【问题标题】:Python 3 - how do I list the first 5 values from a dictionary?Python 3 - 如何列出字典中的前 5 个值?
【发布时间】:2019-07-16 10:34:41
【问题描述】:

我从这样的 JSON 加载字典数据:

list_of_people = json.load(open('list_of_people.json'))

我想从这个 JSON 中挑选前 5 个值项。我试着这样做:

print(data.values()[0:5])

然而,这导致了

TypeError: 'dict_values' object is not subscriptable

我该如何列出?

【问题讨论】:

标签: python python-3.x dictionary


【解决方案1】:

只需将values 转换为列表,如下所示:

print(list(data.values())[0:5])

注意:如果您使用的是 Python 3.5 及更早版本,则字典不会保持顺序,在这种情况下,“前 5 个元素”并不是真正的东西...

如果您有特定的排序方式,可以使用sorted 进行排序,然后才使用[0:5] 进行切片

【讨论】:

    【解决方案2】:

    如果您不想创建可能包含许多元素的中间list,您可以使用itertools.islice

    from itertools import islice
    
    print(dict(islice(list_of_people.items(), 5)))   # shortened dict
    print(list(islice(list_of_people.values(), 5)))  # shortened values
    

    请注意,字典的第一项仅在 python 3.5 及更高版本中才有意义;在那之前的字典是无序的。

    【讨论】:

    • 好点!如果 dict 很大,列出的值可能会很昂贵。
    【解决方案3】:

    你也可以试试这个:

    import json
    person = '{"name": "Bob", "languages": ["English", "Fench"], "location": "mumbai", "interests": "NLP"}'
    person_dict = json.loads(person)
    print(list(person_dict.values())[0:2])
    

    输出

     ['Bob', ['English', 'Fench']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      相关资源
      最近更新 更多