Python 循环时如何获取字典的最后一项

Python 循环时如何获取字典的最后一项,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我知道词典与列表不同,并且“最后”项在词典上下文中没有意义。但是我有一个循环,它根据用户输入在字典上迭代,然后如果用户输入等于其中一个键,它会显示一条消息,否则,它会检查这是否是字典的最后一项,如果是,则会显示一条消息,说“没有找到这样的字典的键。请修改您的条目。” 代码如下: dic = {"Name" : "mostafa", "job" : "Animator", "Likes" : 'Smoking', 'target' : 'nothing'}; inp = input("Plea

我知道
词典
与列表不同,并且“最后”项在
词典
上下文中没有意义。但是我有一个循环,它根据用户输入在字典上迭代,然后如果用户输入等于其中一个键,它会显示一条消息,否则,它会检查这是否是字典的最后一项,如果是,则会显示一条消息,说“没有找到这样的
字典的键。请修改您的条目。”

代码如下:

dic  = {"Name" : "mostafa", "job" : "Animator", "Likes" : 'Smoking', 'target' : 'nothing'};

inp = input("Please eneter a key to show: \r\n");

    for item in dic :
        if(inp == item) :
            print("Thanks, found the key.");
            break;
        # Here I need an IF to check whether this is the last key or not

您可以使用
枚举()

此外,执行以下操作更容易检查关键字是否在字典中:

if inp in dic:
    print("The key is in the dictionary")

您可以使用
枚举()

此外,执行以下操作更容易检查关键字是否在字典中:

if inp in dic:
    print("The key is in the dictionary")
您可以执行以下操作:

打印(dic.get(inp,“没有这样的字典的键”)

您可以按如下操作:


print(dic.get(inp,“没有这样的字典的键”)

在字典上循环以测试是否有键,这会破坏首先使用字典的好处。使用起来要快得多

if inp in dic:
    # Found it.
如果仅当循环未被
中断
终止时才需要运行某些代码,则可以使用
else
子句:

for item in thing:
    if condition:
        break
else:
    thing_that_only_happens_if_you_dont_break()

在字典上循环以测试是否存在密钥,首先会破坏使用字典的好处。使用起来要快得多

if inp in dic:
    # Found it.
如果仅当循环未被
中断
终止时才需要运行某些代码,则可以使用
else
子句:

for item in thing:
    if condition:
        break
else:
    thing_that_only_happens_if_you_dont_break()

我在写一个解决方案,但是,我认为在字典结构中这样做没有意义,因为字典键没有顺序。你为什么要这样做

编辑:也许你想知道最后添加的键?也许您可以查看订购的信息()


编辑二:或者你可以检查:如果输入在dic中,那么检查索引是否等于len(dic)-1

我正在写一个解决方案,但是,我认为在字典结构中这样做没有意义,因为字典键没有顺序。你为什么要这样做

编辑:也许你想知道最后添加的键?也许您可以查看订购的信息()


编辑二:或者你可以检查:如果输入是在dic中,那么检查索引是否等于len(dic)-1 在Python3.7中,
dict
有一个插入顺序,保持了项目最初插入的顺序

因此,dict中的最后一项是
dict[list(dict.keys())[-1])]
范例

所以在你的循环中:

if key == next(reversed(dic.keys())):

只是一个老问题的更新: 在Python3.7中,
dict
有一个插入顺序,保持了项目最初插入的顺序

因此,dict中的最后一项是
dict[list(dict.keys())[-1])]
范例

所以在你的循环中:

if key == next(reversed(dic.keys())):

谢谢,这就是我要找的。但是很抱歉,为什么要从长度中减去1?不是因为我从零开始吗?是的,所以如果字典中有三个元素,索引将是0、1和2。所以最后一个索引是2(3-1)。当然,使用第二个方法更快,但是当我实现它时,它总是说它没有找到,直到我输入一个键值而不是一个值…谢谢,这就是我所寻找的。但是很抱歉,为什么要从长度中减去1?不是因为我从零开始吗?是的,所以如果字典中有三个元素,索引将是0、1和2。最后一个索引是2(3-1)。当然,使用第二个方法更快,但当我实现它时,它总是说它没有找到,直到我输入一个键值而不是一个值…为什么循环<代码>如果dic中有inp:
应该是您所需要的全部。非常感谢。对于我这个新手来说,尝试各种方法是一种很好的学习方式learning@Matthias可能有人出于其他原因想要循环,但仍然想对最后一个循环做一些特定的事情item@simplename:在Python3.7之前,dict中没有“最后”项,即使如此,为最后一项做一些事情也是非常罕见的。在这种情况下,很明显,循环是毫无意义的,就像在大多数情况下一样。为什么循环<代码>如果dic中有inp:应该是您所需要的全部。非常感谢。对于我这个新手来说,尝试各种方法是一种很好的学习方式learning@Matthias可能有人出于其他原因想要循环,但仍然想对最后一个循环做一些特定的事情item@simplename:在Python3.7之前,dict中没有“最后”项,即使如此,为最后一项做一些事情也是非常罕见的。在这种情况下,很明显,循环是没有意义的,就像在大多数情况下一样。