关于dict的问题

前提:

关于dict的问题_第1张图片

 

将两列的数据,第一列作为key,第二列作为value,转化为dict

根据两列数据中的第二列排序,获得符合要求的值

然后根据符合要求的值(value)获取对应的key


报错: 

个别无法获得相应的key,而且个别显示dict中无此value

原因:

在转换为dict的时候,出现了key重复,然后只保留了一个。对应的value进行了覆盖,造成了数据的缺失


os:一开始图代码简洁,直接转dict 然后根据value获取key ,但是忽略了dict的key-value特性!!!还浪费很多时间去找原因【小白写代码的时候还是不可以一味图方便】


解决:

根据第二列进行排序,写for循环,如果第二列符合要求,输出第一列!!!!


pps:dict的相关知识点

关于dict的问题_第2张图片

学习:

python相同key合并value_Python字典及基本操作(超级详细)_weixin_39635567的博客-CSDN博客 

dataframe的两列转换成字典的key和value_老实巴交的小菜的博客-CSDN博客 

学习:

python字典----根据value获取对应key - 代码天地

根据value获取key:

 

方法一:(万能法,不必要求value值的唯一)

直接遍历,很简单,就不解释了,直接上代码:

def get_keys(d, value):
    return [k for k,v in d.items() if v == value]

方法二:反转词典,然后再索引新dict的新key(value值必须唯一)

算是dict的一个小trick:

new_d = {v:k for k,v in d.items()}

方法三:转成list后直接索引(value值必须唯一)

dict.keys()和dict.values()函数都是按照dict顺序返回,变换成list后顺序仍旧不变,故可以直接用list.index()函数去索引list来定位。

list(d.keys())[list(d.values()).index("#你要索引的value")]

 

你可能感兴趣的:(随便写写,python,开发语言)