关于dict的问题

本文探讨了在处理数据时遇到的问题,即在将数据框的两列转化为字典后,由于键的重复导致某些值丢失。解决方案是通过for循环根据排序后的值获取对应的键。同时,介绍了三种根据value获取key的方法:直接遍历、反转字典和转换为list索引。此外,强调了在编程时理解数据结构的重要性。
摘要由CSDN通过智能技术生成

前提:

 

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

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

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


报错: 

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

原因:

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


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


解决:

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


pps:dict的相关知识点

学习:

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")]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值