假设我有一个看起来像这样的json(文件)
[
{
"id": 300,
"name": "B"
},
{
"id": 400,
"name": "C"
},
{
"id": 200,
"name": "A"
}
]
解析id获取
for i in file
id = (int) (i['id'])
#Now I define a variable (difference, which is id-200)
difference = id - 200
我想根据用户定义的变量差异(从最低到最高)对此JSON进行排序。因此,在排序时,它将如下所示:
[
{
"id": 200,
"name": "A"
},
{
"id": 300,
"name": "B"
},
{
"id": 400,
"name": "C"
}
]
如何在排序时使用用户定义的差异变量作为键?
答案 0 :(得分:1)
要按照词典列表中的键进行排序,您可以执行以下操作:
<强>代码:强>
sorted(data, key=lambda x: x['id'])
测试代码:
data = [
{"id": 300, "name": "B"},
{"id": 400, "name": "C"},
{"id": 200, "name": "A"}
]
print(sorted(data, key=lambda x: x['id']))
<强>结果:强>
[{'id': 200, 'name': 'A'}, {'id': 300, 'name': 'B'}, {'id': 400, 'name': 'C'}]
通过任意函数排序:
可以将一个变量的任何函数传递给类似:
的排序def user_sort_order(record):
return record['id'] * -1
print(sorted(data, key=user_sort_order))
<强>结果:强>
[{'id': 400, 'name': 'C'}, {'id': 300, 'name': 'B'}, {'id': 200, 'name': 'A'}]
答案 1 :(得分:0)
不是100%确定差异变量应该做什么,但你可以这样排序:
string aLastName = fileName.Substring(fileName.LastIndexOf(".") + 1,
(fileName.Length - fileName.LastIndexOf(".") - 1));
if (aLastName.ToLower() == "docx")
{
WordprocessingDocument doc = WordprocessingDocument.Open(fileName, false);
string strText = doc.MainDocumentPart.Document.InnerText;
return GetMD5HashFromStream(String2Stream(strText));
}
也许用sorted(data, key=lambda x: x['id'] - 200)
围绕它,差异可以是负数:
abs
顺便说一句,除非您的ID小于200,且“差异”可能为负,否则这与使用ID数值排序(如果我已正确理解您想要的内容)相同。 / p>