我想知道如何在没有第一个和最后一个元素的情况下循环Python字典。我的钥匙从1开始,所以我不能使用len(大写字母)
>>> capitals = {'15':'Paris', '16':'New York', '17':'Berlin', '18':'Brasilia', '19':'Moscou'}
>>> for city in capitals:
>>> print(city)
Paris
New York
Berlin
Brasilia
Moscou
我想要这个结果:
New York
Berlin
Brasilia
我的钥匙从1开始,所以我无法使用len(capitals)
答案 0 :(得分:3)
尝试此操作,将字典转换为列表,然后打印列表
c=[city for key,city in capitals.items()]
c[1:-1]
输出
['New York', 'Berlin', 'Brasilia']
答案 1 :(得分:3)
您可以将数据放在list(capitals.items())
元组列表中,这是一个有序集合:
[('15','Paris'), ('16','New York'), ('17', 'Berlin'), ('18', 'Brasilia'), ('19', 'Moscou')]
然后将其转换回字典,删除第一个和最后一个项目:
capitals = dict(capitals[1:-1])
这给了一个新词典:
{'16': 'New York', '17': 'Berlin', '18': 'Brasilia'}
然后你可以在更新的字典中循环这些键:
for city in capitals:
print(capitals[city])
并获得您想要的城市:
New York
Berlin
Brasilia
答案 2 :(得分:2)
Dictionaries are ordered in Python 3.6+
您可以使用list(capitals.values())[1:-1]
获取除第一个和最后一个之外的城市。
capitals = {'15':'Paris', '16':'New York', '17':'Berlin', '18':'Brasilia', '19':'Moscou'}
for city in list(capitals.values())[1:-1]:
print(city)
New York
Berlin
Brasilia
>>>
2017年12月15日星期五,Guido van Rossum announced on the mailing list:“Dict保持插入顺序”是裁决。
答案 3 :(得分:2)
由于dicts
本质上是无序的,因此您必须先订购其商品。根据您的示例数据,您希望跳过第一个和最后一个按键:
for k in sorted(capitals)[1:-1]:
print(capitals[k])
答案 4 :(得分:2)
我不得不不同意先前的回答,也不同意Guido的说法,即“词典保持插入顺序”。 Dict并非始终保持插入顺序。我刚刚尝试过(虽然在pyspark解释器上,但是仍然),但订单已更改。 因此,在运行此类代码之前,请仔细查看您的环境并进行快速测试。 对我来说,除非您明确知道要删除的密钥,否则没有办法以100%的信心在Python上做到这一点,如果可以,则可以使用dict理解:
myDict = {key:val for key, val in myDict.items() if key != '15'}
答案 5 :(得分:0)
如评论中所述。字典未设置为按顺序存储数据,列表会更好。例如像[[15,'Paris'],[ [16,'New York'],....]
下面是从字典中获取所有键(数字)并将它们放入列表键的代码。然后我弹出列表的第一个(0)元素,然后使用for循环来拉动列表中剩下的键的每个城市。
capitals={'15':'Paris', '16':'New York', '17':'Berlin', '18':'Brasilia', '19':'Moscou'}
keys=list(capitals.keys()) #get list of keys from dictionary
keys.pop(0) #Remove first in list of keys
for key in keys:
print capitals[key]
答案 6 :(得分:0)
您可以对dict进行排序,然后只获取除第一个和最后一个之外的所有值:
capitals = {'15':'Paris', '16':'New York', '17':'Berlin', '18':'Brasilia', '19':'Moscou'}
for i in sorted(capitals)[:-1][1:]:
print(capitals[i])
输出:
New York
Berlin
Brasilia
在一行中:
print([capitals[i] for i in sorted(capitals)[:-1][1:]])