使用字符串索引和值python进行字典排序

2024-04-24 05:11:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想按调用索引后的第一个值(在本例中为:公司名称)对词典进行排序。我的结构如下:

它存储在一个JSON文件中:

{

"0": ["Microsoft", "IT", "Software", "USA", "12000"],
"1": ["Intel", "IT", "Hardware", "BELGIUM", "14500"],
"2": ["Cisco", "IT", "Hardware", "GERMANY", "45120"],
"3": ["HP", "IT", "Hardware", "GERMANY", "545612"],
"4": ["Apple", "IT", "Hardware", "GERMANY", "454555"]  

}

print(mydict[str(id)[0])显示公司名称

每行中的数据类型如下:

Company Name -> Business-> activity -> Country -> Amount of staff employeed

如果我尝试用sorted(mydict)对我的听写进行排序,它不起作用,我也尝试用zip对它进行排序,但也失败了。在

这是我第一次使用dictornaries,我还在学习python,所以我真的需要一个帮手

我想用这个分类字典来填充我用Mako模板引擎生成的表。它已经与未排序字典一起使用:)


Tags: 文件名称json字典排序公司itsoftware
3条回答

你不能“分类”字典。如果你想对字典进行排序,字典没有所需的顺序。在

因为您只想把它写出来,所以您可以按照字典中名称的顺序对键进行排序。然后,根据sorted返回的键的顺序写出字典内容。在

因此,可以按名称排序:

# sorted(d, key=d.get) returns [4, 2, 3, 1, 0]
for i in sorted(d, key=d.get):  
    print(d[i])  # or, write it out

按顺序打印内容:

^{pr2}$

你也可以写出来。在

我成功地实现了自己的版本来分类字典,而不使用有序的,我只是把公司名称变成键,然后用这个来对我的字典进行排序,它工作了!

data_companies = {}

    for key_s in data_opl:
        new_key =  data_opl[key_s][0]
        data_companies[new_key] = data_opl[key_s]

之后我用这个打印出来:

^{pr2}$

我非常感谢并珍视你帮助我的努力

字典和哈希表是无序的,但是如果您想维护数据的顺序,可以使用OrderedDict。在

可以根据您的数据创建OrderedDict

from collections import OrderedDict
d = {

"0": ["Microsoft", "IT", "Software", "USA", "12000"],
"1": ["Intel", "IT", "Hardware", "BELGIUM", "14500"],
"2": ["Cisco", "IT", "Hardware", "GERMANY", "45120"],
"3": ["HP", "IT", "Hardware", "GERMANY", "545612"],
"4": ["Apple", "IT", "Hardware", "GERMANY", "454555"]  

}

d = OrderedDict(sorted(d.items(), key=lambda x : x[1][0][0]))
#  x[1] is the value, x[1][0] is the list, x[1][0][0] is the company name
print(d)

OrderedDict([('4', ['Apple', 'IT', 'Hardware', 'GERMANY', '454555']), ('2', ['Cisco', 'IT', 'Hardware', 'GERMANY', '45120']), ('3', ['HP', 'IT', 'Hardware', 'GERMANY', '545612']), ('1', ['Intel', 'IT', 'Hardware', 'BELGIUM', '14500']), ('0', ['Microsoft', 'IT', 'Software', 'USA', '12000'])])

相关问题 更多 >