【问题标题】:dictionary key with more than one value not printing all values [closed]具有多个值的字典键不打印所有值[关闭]
【发布时间】:2018-03-20 02:25:18
【问题描述】:

我有一个包含重复键但这些键的值不同的字典,我想提取特定键的所有值。这是我的意思的缩写版本:

x_table = {'A':'GCT','A':'GCC','A':'GCA','A':'GCG'}

AA_list = [{'A'}]

for aa in AA_list:
    if aa in x_table:
        print x_table[aa]

由于某种原因,它只会从 x_table 中提取其中一个值。

感谢您的帮助。

【问题讨论】:

  • 字典不能有重复键。
  • 一个字典的每个键只能有一个值,您需要将所有不同的值放在一个列表(或您选择的任何容器)中并将其用作值。

标签: python bioinformatics biopython


【解决方案1】:

一个字典不能对同一个键有多个条目。
想一想 - 您打算如何访问该值?
x_table['A'] 应该返回什么? 'GCT' 或者 'GCA'

您可以做的是对您的数据结构稍作更改并保存一个列表而不是单个值。
例如:x_table = {'A':['GCT','GCC','GCA','GCG'], 'B' = ['some', 'other', 'values']}

在您的示例中 - 您只有 1 个密钥。根据您发布的信息,我无法判断这是小样本还是一般情况。如果是一般情况,也许list / set / tuple 会更好地为您服务:('GCT','GCC','GCA','GCG')

如果你想更好地理解为什么你不能为同一个键存储多个条目,你可以阅读它in this link

【讨论】:

  • 谢谢,这更有意义。
【解决方案2】:

也许你需要像这样定义你的 dict 结构:

x_table = {'A':['GCT','GCC','GCA','GCG']}

【讨论】:

    【解决方案3】:

    因此,字典被实现为一个集合。因此,您不能拥有多个相同的键,如下所示:

    dict = {'a': 'blah', 'b': 'foo', 'b': 'bar'}; // ''b would only have the value 'bar'
    

    字典的设计方式不允许这样做。它们基本上是哈希图,因此允许通过键快速访问值,但每个值只能有一个键。当您分配第二个键时,它会覆盖第一个键。

    但是,您可以尝试将字典作为您的值,如下所示:

    x_table = {'A':{'a_1':GCT','a_2':'GCC','a_3':'GCA','a_4':'GCG'},'B':'blah'}
    

    AA_list = ['A']['a_1]

    【讨论】:

    • 这个答案有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多