生信Log27|一文总结python不同结构数据的增删查改

用pandas已经有一段时间了,从初学者到现在发现处理的数据类型除了dataframe以外,一般是字符,列表,字典(json的文件格式)和Series,dataframe在这里总结一下自己常用的操作供以后查阅。

1、字典

  • 查看字典的key和values
#查看key
    dict.keys() #打印出全部的keys
    #查看value
    dict.values()
    #查看特定key对应的value
    dict.get(key) #输出的是value
    #遍历所有的key和对应的value
    for k,v in dict.items():
     print(k,v)
  • 增加字典的key

    查看了很多资料发现很多都是需要加上值

增加key的方法

dict['new_key'] = 'new_value'

#后续如果想要再读进文件相同key中的value最好还是用update,字典会自动舍弃掉重复值,保持key的unique特性,使用list的append有很多重复值
dict.update({'new_key':'new_value'}) #注意花括号

#两个字典合并
dict_1 |dict_2

2、列表List

#循环读取列表并编辑
list = [a, b, c, d]
list = [i + '@' for i in list]

#增加元素
list.append(new_element)

# 删除list中的元素
list.remove('element')

#插入元素
list.insert('element')


#其他的一些方法是根据索引index(元素所在的位置对列表中的元素进行修改)
list.pop(list[index]) #后面的元素会自动跟着补齐

3、复杂json(dict)的数据获取

有一些字典的数据里面包含了很多层嵌套,既有典中典,又有典中list,获取数据时难免,在这里介绍一个包叫jsonPath建议使用Jsonpath的方法(类似Xpath),这个包通过pip install来下载,一些匹配的规则可以到官网上查询他们的教程。

!pip install jsonpath-ng
from jsonpath-ng import jsonpath, parse

#构建查询的字段
query = "$.node_name"

#根据查询的字段去匹配对应的内容,并获取对应内容所在的jsonPath
#其中value是值,match.full_path返回的是json的值
value = [match.value for match in parse(query).find(data)]
value_path = [str(match.full_path) for match in parse(query).find(data)]

#如果key对应的value是个list该怎么匹配
query = "$.node_name[*]" #这个'[*]'就是列表里面的内容,但这种匹配方法不能拿到
#匹配列表中的列表
query = "$.node_name[*][*]"#这两个[*]是有层级关系的后面一个[*]是前一个list的内容
#在只知道主key的情况下获取层级下的key,可以用类似正则表达式的写法(wildcard)"*" 
query = "$.main_node.@"
#在不知道key名字的情况下获取key的名字和key的value
query = "$.@.*" #适用于这个key对应的是dict或者是string的值

query = "$.@[*]" #适用于key对应的值是list的情况

总结

  • 查阅了一下资料发现python或者其他语言的里,使用的符号[] {}同样也会影响数据的类型(最典型的当属pandas里面形成Series和dataframe),因此在调用这些的时候还需要多多留意

各位大佬勿喷,有能力的在留言区给各位指个路呗~

PS:目前集中在列表和字典的操作,一直会更新,就是比较慢(因为不太想写重复的东西)


参考

https://stackabuse.com/python-how-to-add-keys-to-dictionary/

https://devenum.com/append-value-to-an-existing-key-in-a-python-dictionary/

https://www.geeksforgeeks.org/python-convert-two-lists-into-a-dictionary/

Jsonptah

还是字典教程

你可能感兴趣的:(生信Log27|一文总结python不同结构数据的增删查改)