在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]
答案 0 :(得分:1)
您通常提到Python。您可以使用一个数据框:
import pandas as pd
d = {
'price_one': 12,
'price_two': 13,
'price_three': 5
}
df = pd.DataFrame(list(d.values()), columns=['val'], index=d.keys())
df.loc['price_one'] = 1
df.sort_values(['val'])
输出:
答案 1 :(得分:0)
尝试一下:
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
。
答案 2 :(得分:0)
字典键是对字典中特定条目的引用。
按字典条目值的顺序生成字典键列表的功能是:
def sorted_keys(d):
return sorted(d.keys(), key=lambda k: d[k])
因此在您的示例中访问最低价格:
ks = sorted_keys(d)
smallest = d[ ks[0] ]
问题在于您必须重新计算字典的任何插入,更改或删除顺序。这些将很难被拦截,因此更好地保持控制并在您要使用它时重新计算顺序。
您可以将所有这些内容都埋在class SortedDict(dict)
中,以覆盖字典的get函数。