GVKun编程网logo

按特定值对python中的JSON进行排序(python按列表特定元素排序)

22

本篇文章给大家谈谈按特定值对python中的JSON进行排序,以及python按列表特定元素排序的知识点,同时本文还将给你拓展python-如何按两列或多列对pythonpandas中的dataFra

本篇文章给大家谈谈按特定值对python中的JSON进行排序,以及python按列表特定元素排序的知识点,同时本文还将给你拓展python - 如何按两列或多列对python pandas中的dataFrame进行排序?、python – 如何对列表中的特定元素进行排序?、Python-根据另一个列表中的值对列表进行排序?、python中文分词,使用结巴分词对python进行分词(实例讲解)等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

按特定值对python中的JSON进行排序(python按列表特定元素排序)

按特定值对python中的JSON进行排序(python按列表特定元素排序)

您好我试图通过python中的“data_two”字段对以下JSON进行排序:

{
"1.2.3.4": {
    "data_one": 1,"data_two": 8,"list_one": [],"list_two": [
        "item_one"
    ],"data_three": "string1"
},"5.6.7.8": {
    "data_one": 1,"data_two": 9,"data_three": "string1","data_four": "string2","data_five": "string3"
}
}

我尝试过使用类似的东西

entries = sorted(json_data['1.2.3.4'],key=lambda k: k['data_two'])

然而,我没有太多运气/不断混淆.我的最终目标是通过“data_two”值对所有json条目进行排序,其中JSON中每个条目的键是一个随机的IP字符串.我是JSON世界的新手,请原谅我,如果这是一个简单的问题,任何帮助将不胜感激.

谢谢

最佳答案
如果您可以控制数据的聚合方式,it’s better to have a list of dicts,并且IP将是数据dict {…,’ip’:’127.0.0.1′}内的值,而不是容器父dict中的键

转换为保留元素顺序的容器

您只能对维护元素顺序的结构进行排序,例如列表,例如有dict实现维护OrderedDict之类的顺序,例如

您可以随时转换为那些(如果慢/大数据可能不是您的首选)

转换为列表[(键,值),…]或列表[value,…]

一种可能的方法是检索dict中的所有值,然后返回这些值的列表,按您选择的字段排序

您还可以对ips_data.items()返回的(键,值)进行排序,但这将创建一个新列表.关键是IP,价值是IP数据

sorted_list_of_keyvalues = sorted(ips_data.items(),key=item[1]['data_two'])

上面的列表以[(key1,value1),(key2,value2),…]的形式出现

您还可以获取值并删除键

sorted_list_of_values = [item[1] for item in sorted_list_of_keyvalues]

此列表的形式为[value1,value2,…]

请注意,您可能认为您只能按值而不是(键.值)进行排序,但您的数据中包含IP密钥,您可能希望保留该值.

转换为OrderedDict

如果您绝对希望将结构保留为dict,则可以使用OrderedDict

from collections import OrderedDict
ordered_items = sorted(ips_data.items(),key=lambda item: item[1]['data_two'])
ordered_ips_data_dict = OrderedDict(ordered_items)

有序的dict行为就像一个dict,但是key和items迭代将保持元素的顺序.

或者,保留已排序的键列表,并按此顺序处理

或者,您可以将该字典的键排序到列表中,然后您可以按顺序处理该字典.优点是您不必复制/转换数据

>>> ips_data = {
... "1.2.3.4": {
...     "data_one": 1,...     "data_two": 8,...     "list_one": [],...     "list_two": [
...         "item_one"
...     ],...     "data_three": "string1"
... },... "5.6.7.8": {
...     "data_one": 1,...     "data_two": 9,...     "data_three": "string1",...     "data_four": "string2",...     "data_five": "string3"
... }
... }
>>> ips_data.keys()
['1.2.3.4','5.6.7.8']
>>> ips = ips_data.keys()

现在,您可以按字段data_two对键进行排序

>>> sorted_ips = sorted(ips,key=lambda ip: ips_data[ip]['data_two'],reverse=True)
>>> sorted_ips
['5.6.7.8','1.2.3.4']

排序后的密钥,您可以按照排序的密钥顺序执行您想要的dict,例如,按此顺序处理它可能比将dict复制到像列表这样的新结构更有效

# Trivial example of processing that just puts the values into a list   
>>> [ips_data[ip] for ip in sorted_ips]
[{'data_three': 'string1','data_two': 9,'data_five': 'string3','data_four': 'string2','list_two': ['item_one'],'data_one': 1},{'list_two': ['item_one'],'data_two': 8,'data_one': 1,'data_three': 'string1','list_one': []}]
>>> 

python - 如何按两列或多列对python pandas中的dataFrame进行排序?

python - 如何按两列或多列对python pandas中的dataFrame进行排序?

假设我有一个带有列的数据框ab并且c,我想按列b按升序对数据框进行排序,并按列c按降序对数据框进行排序,我该怎么做?

python – 如何对列表中的特定元素进行排序?

python – 如何对列表中的特定元素进行排序?

假设我有一个清单,

lst = [5,3,5,1,4,7]

我想让它从第二个元素3到结尾排序.

我以为我能做到:

lst[1:].sort()

但是,这不起作用.

我该怎么做?

解决方法

lst = lst[0:1] + sorted(lst[1:])

Python-根据另一个列表中的值对列表进行排序?

Python-根据另一个列表中的值对列表进行排序?

如何解决Python-根据另一个列表中的值对列表进行排序??

最短代码

[x for _,x in sorted(zip(Y,X))]
@H_301_4@

例:

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [ 0,   1,   1,    0,   1,   2,   2,   0,   1]

Z = [x for _,x in sorted(zip(Y,X))]
print(Z)  # ["a", "d", "h", "b", "c", "e", "i", "f", "g"]
@H_301_4@

一般来说

[x for _, x in sorted(zip(Y,X), key=lambda pair: pair[0])]
@H_301_4@

解释:

  • zip@H_301_4@两个list@H_301_4@。
  • 创建一个新的,list基于zip使用排序sorted()。
  • 使用列表推导从排序的,压缩的中提取每对的第一个元素list。

解决方法

我有一个这样的字符串列表:

X = ["a","b","c","d","e","f","g","h","i"]
Y = [ 0,1,2,1]

使用Y中的值对X进行排序以获取以下输出的最短方法是什么?

["a","i","g"]

具有相同“键”的元素的顺序无关紧要。我可以求助于for结构的使用,但我好奇是否有更短的方法。有什么建议么?

python中文分词,使用结巴分词对python进行分词(实例讲解)

python中文分词,使用结巴分词对python进行分词(实例讲解)

在采集美女站时,需要对关键词进行分词,最终采用的是python的结巴分词方法。

中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词。

其基本实现原理有三点:

1.基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)

2.采用了动态规划查找最大概率路径,找出基于词频的最大切分组合

3.对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法

安装(Linux环境)

下载工具包,解压后进入目录下,运行:python setup.py install

模式

1.默认模式,试图将句子最精确地切开,适合文本分析

2.全模式,把句子中所有的可以成词的词语都扫描出来,适合搜索引擎

接口

• 组件只提供jieba.cut 方法用于分词

• cut方法接受两个输入参数:

• 第一个参数为需要分词的字符串

• cut_all参数用来控制分词模式

• 待分词的字符串可以是gbk字符串、utf-8字符串或者unicode

• jieba.cut返回的结构是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list 

• seg=jieba.cut("http://www.gg4493.cn/"):

实例

#! -*- coding:utf-8 -*-
import jieba
seg_list = jieba.cut("我来到北京清华大学",cut_all = True)
print "Full Mode:",' '.join(seg_list)

seg_list = jieba.cut("我来到北京清华大学")
print "Default Mode:",' '.join(seg_list)

结果

以上这篇python中文分词,使用结巴分词对python进行分词(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

我们今天的关于按特定值对python中的JSON进行排序python按列表特定元素排序的分享已经告一段落,感谢您的关注,如果您想了解更多关于python - 如何按两列或多列对python pandas中的dataFrame进行排序?、python – 如何对列表中的特定元素进行排序?、Python-根据另一个列表中的值对列表进行排序?、python中文分词,使用结巴分词对python进行分词(实例讲解)的相关信息,请在本站查询。

本文标签: