【发布时间】:2018-03-05 09:57:02
【问题描述】:
我有一本像这样的字典:
d = {1: 'a', 2:'b', 3:'c', 4:'c', 5:'c', 6:'c'}
我想对这个字典进行切片,如果最后的值相同,它应该只返回遇到的第一个值。所以返回是:
d = {1: 'a', 2:'b', 3:'c'}
我使用collections.defaultdict(OrderedDict) 来保持按键排序。
目前,我正在使用循环。有没有一种pythonic的方式来做到这一点?
更新
字典值也可以是字典:
d = {1: {'a': 'a1', 'b': 'b1'}, 2:{'a': 'a1', 'b': 'b2'}, 3:{'a': 'a1', 'b': 'c1'}, 4:{'a': 'a1', 'b': 'c1'}, 5:{'a': 'a1', 'b': 'c1'}, 6:{'a': 'a1', 'b': 'c1'}}
输出:
d = {1: {'a': 'a1', 'b': 'b1'}, 2:{'a': 'a1', 'b': 'b2'}, 3:{'a': 'a1', 'b': 'c1'}}
【问题讨论】:
-
字典是否总是按其键排序?我看到你有 1,2,3,4,5,6 的键。如果是这样,那么使用列表代替字典是不必要的。
-
循环是pythonic。我不会说理解总是比循环更 Pythonic,这是主观的。
标签: python dictionary ordereddictionary