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

时间:2013-12-30 11:43:23

标签: python python-3.x dictionary

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

以下是代码:

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

5 个答案:

答案 0 :(得分:3)

您可以使用enumerate()

for i, item in enumerate(dic):
    if (inp == item) :
        print("Thanks, found the key.")
        break
    if i == len(dic) - 1:
        print('This is the last key in the loop')

此外,通过执行以下操作更容易检查密钥是否在字典中:

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

答案 1 :(得分:1)

在字典上循环以测试是否存在密钥会破坏首先使用字典的好处。使用

要快得多
if inp in dic:
    # Found it.

如果只有在break未终止循环时才需要运行某些代码,则可以使用else子句:

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

答案 2 :(得分:1)

只需更新一个老问题: 从python 3.7开始,nutch具有插入顺序,保持了项目最初插入的顺序。

因此,字典中的最后一项是dict 例子

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

OR

>> d = dict(k1=(1,2),k2=(3,4),k3=(56))
>> d
>> {'k1': (1, 2), 'k2': (3, 4), 'k3': 56}
>> d[list(d.keys())[-1]] = 999
>> d
>> {'k1': (1, 2), 'k2': (3, 4), 'k3': 999}

所以在您的循环中:

>> d[next(reversed(d.keys()))] = 1000
>> {'k1': (1, 2), 'k2': (3, 4), 'k3': 1000}

答案 3 :(得分:0)

您可以执行以下操作:

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

答案 4 :(得分:0)

我正在编写一个解决方案,但我认为在字典结构中执行此操作没有意义,因为字典键没有排序。你为什么要这样做?

编辑:也许你想知道最后添加的密钥?也许你可以查看OrderedDict =)

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