Last Key in Python Dictionary

后端 未结 10 1949
轻奢々
轻奢々 2021-01-31 13:32

I am having difficulty figuring out what the syntax would be for the last key in a Python dictionary. I know that for a Python list, one may say this to denote the last:

相关标签:
10条回答
  • 2021-01-31 14:00

    Since python 3.7 dict always ordered(insert order),

    since python 3.8 keys(), values() and items() of dict returns: view that can be reversed:

    to get last key:

    next(reversed(my_dict.keys()))  
    

    the same apply for values() and items()

    PS, to get first key use: next(iter(my_dict.keys()))

    0 讨论(0)
  • 2021-01-31 14:04

    It doesn't make sense to ask for the "last" key in a dictionary, because dictionary keys are unordered. You can get the list of keys and get the last one if you like, but that's not in any sense the "last key in a dictionary".

    0 讨论(0)
  • 2021-01-31 14:11

    If insertion order matters, take a look at collections.OrderedDict:

    An OrderedDict is a dict that remembers the order that keys were first inserted. If a new entry overwrites an existing entry, the original insertion position is left unchanged. Deleting an entry and reinserting it will move it to the end.


    In [1]: from collections import OrderedDict
    
    In [2]: od = OrderedDict(zip('bar','foo'))
    
    In [3]: od
    Out[3]: OrderedDict([('b', 'f'), ('a', 'o'), ('r', 'o')])
    
    In [4]: od.keys()[-1]
    Out[4]: 'r'
    
    In [5]: od.popitem() # also removes the last item
    Out[5]: ('r', 'o')
    

    Update:

    An OrderedDict is no longer necessary as dictionary keys are officially ordered in insertion order as of Python 3.7 (unofficially in 3.6).

    For these recent Python versions, you can instead just use list(my_dict)[-1] or list(my_dict.keys())[-1].

    0 讨论(0)
  • 2021-01-31 14:15

    yes there is : len(data)-1.

    For the first element it´s : 0

    0 讨论(0)
  • 2021-01-31 14:19

    It seems like you want to do that:

    dict.keys()[-1]
    

    dict.keys() returns a list of your dictionary's keys. Once you got the list, the -1 index allows you getting the last element of a list.

    Since a dictionary is unordered*, it's doesn't make sense to get the last key of your dictionary.

    Perhaps you want to sort them before. It would look like that:

    sorted(dict.keys())[-1]
    

    Note:

    In Python 3, the code is

    list(dict)[-1]
    

    *Update:

    This is no longer the case. Dictionary keys are officially ordered as of Python 3.7 (and unofficially in 3.6).

    0 讨论(0)
  • 2021-01-31 14:20

    In python 3.6 I got the value of last key from the following code

    list(dict.keys())[-1]
    
    0 讨论(0)
提交回复
热议问题