python如何使用字典中的值并进行比较_比较字典python中的值

我在Python中有2个嵌套字典,具有以下格式:

1166869: {'probL2': '0.000', 'probL1': '0.000', 'pronNDiff_site': '1.000', 'StateBin': '0', 'chr': 'chrX', 'rangehist': '59254000-59255000', 'start_bin': '59254000', 'countL2': '4', 'countL1': '0'}

1166870: {'probL2': '0.148', 'probL1': '0.000', 'pronNDiff_site': '0.851', 'StateBin': '0', 'chr': 'chr2', 'rangehist': '59254000-59255000', 'start_bin': '59255000', 'countL2': '5', 'countL1': '15'}

1166871: {'probL2': '0.000', 'probL1': '0.000', 'pronNDiff_site': '1.000', 'StateBin': '0', 'chr': 'chrY', 'rangehist': '59290000-59291000', 'start_bin': '59290000', 'countL2': '1', 'countL1': '2'}

其中1166869,11668和1166871表示我从中读取数据的文件中的一行,其余的键是数据本身.

现在我想创建一个列表,我将所有不同的值存储在键“chr”中,因为有一些重复的值.

如何浏览字典并对2个值进行比较?此代码无效:

for k in range(len(file_dict)):

for j in range(len(file_dict)-1):

if (file_dict[j]["chr"] != file_dict[k]["chr"]):

list_chr.append(file_dict[j]["chr"])

解决方法:

使用一套,只需一次性使用所有项目:

chr = { v['chr'] for v in file_dict.itervalues() }

这使用集合理解在一行代码中生成您的集合.

在Python 2.7中引入了集合理解;在早期版本中使用:

chr = set(v['chr'] for v in file_dict.itervalues())

在Python 3中,您需要用.values()替换.itervalues().

你自己的代码不起作用,因为python词典不是列表;您不是按索引检索值,而是按键检索值.您必须将其更改为:

for key in file_dict:

for other_key in file_dict:

if key == other_key:

continue

if file_dict[key]['chr'] != file_dict[otherkey]['chr']:

list_chr.append(filed_dict[key]['chr'])

但这确实是低效的,更不用说错误了.

标签:python,dictionary

来源: https://codeday.me/bug/20190725/1536436.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值