基于值对Python Dictionary进行排序

时间:2014-10-12 22:41:34

标签: python dictionary attributes

我有以下程序从tsv文件中读取并导入到字典中。我需要根据jobID对字典进行排序,并给出了这个错误:

  

AttributeError:'dict'对象没有属性'jobid'

  apps = {}
  for row in csvreader:
    apps[counter]= {'userid': row[0], 'time': row[1], 'jobid': row[2]}
    counter = counter + 1

  sorted_keys = sorted(apps.keys(), key=lambda x:apps.jobid)

感谢所有人的帮助。

dict中前三行的示例输出:

{'jobid': 'JobID', 'userid': 'UserID', 'time': 'ApplicationDate'}

{'jobid': '169528', 'userid': '47', 'time': '2012-04-04 15:56:23.537'}

{'jobid': '284009', 'userid': '47', 'time': '2012-04-06 01:03:00.003'}

谢谢!

2 个答案:

答案 0 :(得分:2)

您似乎想要使用apps[x]["jobid"]而不是apps.jobid

答案 1 :(得分:1)

您应该使用应用列表。然后,您可以使用字典查找语法x [' jobid']对jobid进行排序。这里是处理样本数据:

csvreader = (
    ('user1', '2pm', 2),
    ('user2', '2pm', 3),
    ('user3', '2pm', 1)
)

apps = []
for row in csvreader:
    apps.append({'userid': row[0], 'time': row[1], 'jobid': row[2]})

sorted_data = sorted(apps, key=lambda x:x['jobid'])