我知道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
答案 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