如果密钥是元组,如何访问字典中密钥的值?

时间:2017-08-24 13:11:55

标签: python dictionary

所以我想说我有这个代码

x = { (1,"name1"):5673,
      (2,"name2"):3265,
      (3,"name3"):6319,
      (4,"name4"):2539,
      (5,"name5"):1734,
    }

我希望得到5673,我知道我可以x[(1,"name1")],但我希望能够使用数字或字符串,例如x[0][1]并获取5673(零是使用元组中的第一个索引,1代表第一个字典,或者它们中的任何一个有数字1)用数字选择或x[1]["name2"]我们得到3265用字符串选择(也是1是使用元组中的第二个索引而“name2”是第二个字典,或者它们中的任何一个都有字符串“name2”),其他示例是我们可以使用x[0][3]并获取{{1或者使用6319并获取x[1]["name5]

3 个答案:

答案 0 :(得分:0)

我认为你把字典与列表混淆了。您是否尝试使用索引访问字典的键?这不是它的工作原理。您可以创建具有相同值的多个键,以便能够访问相同的值。

答案 1 :(得分:0)

通过设置数据结构的方式,遗憾的是无法在不改变结构的情况下以您描述的方式访问值(例如x [0] [1])。以下结构允许您使用要访问各种值的方法。

x = [ {1: 5673, "name": "name1"},
    {2: 3265, "name": "name2"},
    {3: 6319, "name": "name3"},
    {4: 2539, "name": "name4"},
    {5: 1734, "name": "name5"}

]

此外,如果您想使用x [0] [" name0"] -

进行访问
  x = [ {"name0": 5673},
    {"name1": 3265},
    {"name2": 6319},
    {"name3": 2539},
    {"name4": 1734 }

]

字典也没有订购,也没有索引。值只能通过字典中存在的键访问(否则您将获得KeyError)。如果要访问x [0],则要么必须是名为0的键,要么x必须是如上所示的列表。希望这会有所帮助。

答案 2 :(得分:0)

您可以在for中解析键的各个元素,并且只有在与您组成的逻辑匹配时才返回该值。或者你可以将你的数据转换成一个合适的(字典列表)字典,其中包含你可以随意查询的数据结构。