我有一本字典词典。对于dict中的每个键,都有一个列表,其中包含两个项目。一个是另一个字典,另一个是整数。
dict = {
'hello' : [
{
'blah' : 1,
'dodo' : 2
},
3
],
'world' : [
{
'foo' : 7,
'bar' : 1
},
8
]
}
我想在列表中的第二项(整数)上对字典dict进行排序。然后从字典中删除第一个'n'键。有什么办法吗?已排序的函数仅适用于列表。
以下是我正在尝试执行此操作的功能。
def create_inverted_index(inverted_index, corpus_tokens, corpus_files):
for file_tokens in corpus_tokens:
file_id = corpus_files[file_tokens[0]]
for token in file_tokens[1]:
if token in inverted_index.keys():
inverted_index[token][1] += 1
if file_id in inverted_index[token][0].keys():
inverted_index[token][0][file_id] += 1
else:
inverted_index[token][0][file_id] = 1
else:
inverted_index[token] = [{file_id : 1}, 1]
答案 0 :(得分:3)
你可以这样做:
d = {1: [1, 2], 3: [2,4], 4:[3,3], 2:[4,1], 0:[5,0]} # dict to remove items from
sorted_list=sorted(d.items(), key=lambda x: x[1][1])
sorted_keys = [key[1] for key in sorted_list]
n=2 # number of items to remove
for key in sorted_keys[0:n]:
d = dict([(k,v) for k,v in d.items() if v != key ])
此代码将dict复制到dict值中第二项所订购的列表。然后它创建一个只包含已排序键的列表,并迭代它,将它们作为字典中的值删除。
对于我的d和n=3
的值,输出为:
{3: [2, 4], 4: [3, 3]}
对于n = 2:
{1: [1, 2], 3: [2, 4], 4: [3, 3]}
Ps:这可能不是最有效的方式,但是做了工作
答案 1 :(得分:1)
在Python中,词典没有订单。您无法对dict
进行排序。但是,您可以查看collections.OrderedDict
。