【发布时间】:2015-09-30 21:33:03
【问题描述】:
问题是如何根据最大值和最小值通过键提取值来解析字典。然后比较其中的值,并根据计算添加一些键值。也许问题很乱,但我会用代码提供更多解释。
json 对象
[
{
"YCI": 0.014076729909151329,
"TCI": 0.5610661498232027,
"FCI": 0.327632092582722,
"TFCI": 3.04906430661623,
"naziv": "HDZ",
"YCSI": 14.49723089452966
},
{
"YCI": 0.04249999676677044,
"TCI": 0.33129318126147167,
"FCI": 1.677073944380761,
"TFCI": 4.326953034001479,
"naziv": "HNS",
"YCSI": 56.80909574468085
},
{
"YCI": 0,
"TCI": 0.40603351151808614,
"FCI": 0,
"TFCI": 12.61045547126369,
"naziv": "HSP AS",
"YCSI": 0
},
{
"YCI": 2.231205214448367,
"TCI": 0,
"FCI": 0,
"TFCI": 0,
"naziv": "HSS",
"YCSI": 949.343111111111
}
]
好的,这是我的字典。现在如何比较字典中的键:
- YCI
- TCI
- FCI
- TFCI
- 纳粹
- YSCI
彼此基于他们的价值观。如果值 YCI 的值高于 YCI,它应该在新字典中设置数字 1,并且该逻辑也适用于字典中的其他键。 输出将类似于:
json 输出
[
{
"YCI": 3,
"TCI": 1,
"FCI": 2,
"TFCI": 3,
"naziv": "HDZ",
"YCSI": 3
},
{
"YCI": 2,
"TCI": 3,
"FCI": 1,
"TFCI": 2,
"naziv": "HNS",
"YCSI": 2
},
{
"YCI": 0,
"TCI": 2,
"FCI": 0,
"TFCI": 1,
"naziv": "HSP AS",
"YCSI": 0
},
{
"YCI": 1,
"TCI": 0,
"FCI": 0,
"TFCI": 0,
"naziv": "HSS",
"YCSI": 1
}
]
最高值获得数字 1,最低值取决于字典包含多少对象。
代码尝试
print max(nvalues[0].iteritems(), key=operator.itemgetter(1))[1]
使用此代码,我可以提取最高值,但如何在其值中对字典进行排序。如果你能给我一些逻辑来解决这个问题,我将不胜感激。
【问题讨论】:
-
这有点令人困惑。你可以添加一步一步的解释吗?对于第一个字典,YCSI 的值最高,但是在新字典中它的值没有设置为 1。将值设置为 0,2,3 的逻辑是什么?
-
我认为最简单的解决方案是对 dict
N次列表进行排序(每个要“排名”的属性一个),然后用排序数组中的索引替换值.. . -
示例输出中的索引与您描述的语义不匹配。请更正它们,以便我们了解您想要做什么。
-
输出样本已更改。
标签: python arrays json sorting parsing