[英]List of references to items in a dictionary
在python中,有没有一种方法可以创建一个列表,其中每个元素都是对字典中某个元素的引用? 这样,我可以维护一个排序列表,同时还可以通过索引到字典来更改值。
d = {
'price_one': 12,
'price_two': 13,
'price_three': 5
}
sorted_list = [ptr_to_price_three, ptr_to_price_one, ptr_to_price_two]
print(sorted_list) # [5, 12, 13]
d['price_one'] = 1
sorted_list.sort() # [ptr_to_price_one, ptr_to_price_three, ptr_to_price_two]
print(sorted_list) # [1, 5, 13]
尝试这个:
d = {
'price_one': 12,
'price_two': 13,
'price_three': 5
}
def get_sorted(d):
sorted_list = sorted(list(d.values()))
return tuple(zip(sorted_list, d[key] for key in sorted_list))
# end get_sorted
print(get_sorted(d))
d['price_one'] = 1
print(get_sorted(d))
请注意,您每次都必须调用get_sorted(d)
。
同样,它返回按键对对(键,值)排列的元组。 如果要访问说第三个值,请执行get_sorted(d)[2][1]
。 的2
对第三对,所述1
对的值。
字典键是对字典中特定条目的引用。
用于按照字典条目值的顺序生成字典关键字列表的函数是:
def sorted_keys(d):
return sorted(d.keys(), key=lambda k: d[k])
因此,在您的示例中访问最小价格:
ks = sorted_keys(d)
smallest = d[ ks[0] ]
问题是您必须重新计算字典的任何插入,更改或删除顺序。 这些将很难被拦截,因此更好地保持控制并在您要使用它时重新计算顺序。
您可以将所有这些都掩埋在重写字典的get函数的class SortedDict(dict)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.