繁体   English   中英

字典中对项目的引用列表

[英]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]

您通常提到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'])

输出:

在此处输入图片说明

尝试这个:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM