【问题标题】:python if statement on dictionary valuepython if语句关于字典值
【发布时间】:2012-06-06 10:38:20
【问题描述】:

我已经创建了一个字典:

print dict

{'a': [['1', ' 2', ' 3']], 'b': [['2', ' 3', ' 4'], ['3', ' 4', ' 2']], 'c': [['1', ' 6', ' 2']]}

我不知道如何生成 if 语句 val[0]。

if val[0]dic
 print val[0]

感谢您的帮助

【问题讨论】:

  • 请发布所需的输出
  • 你的问题不清楚,请发布输出
  • 嗨,对不起,这不清楚。我正在尝试在我的字典中的第一个值上写一个 if 语句。如果 2 存在,则打印 2。这有帮助吗?
  • @Dustin 字典没有排序,所以没有第一项,考虑使用列表。您可以将输出添加到问题中吗?
  • 建议您尝试创建一些dict 对象和print 它们。您会看到内容的输出顺序与您放入的顺序不同。

标签: python dictionary if-statement


【解决方案1】:

您使用了错误的数据类型进行索引。如果您想要排序键,ActiveState 上的this post 显示了一种对无序字典键进行排序的方法。

Ordered dictionaries 的顺序是稳定的,但仍然不是可索引的对象。您需要重新审视您正在尝试做的事情,并更清楚地定义您的问题领域。

【讨论】:

    【解决方案2】:

    如果您尝试按索引访问元素,我认为您不需要字典类型。字典是基于哈希的查找容器,由键索引。在您的示例中:

    >>> va['a']
    [['1', ' 2', ' 3']]
    

    您可以使用以下方法测试关键存在:

    if 'a' in va:
        print('a is in va')
    

    http://docs.python.org/library/stdtypes.html#dict

    【讨论】:

    • 但是,我在字典中的第一个值之后。这有意义吗?
    • 请在发布之前在 REPL 中测试您的样本。您的 if 语句缺少必需的尾随冒号。
    • 这是一次尝试:if 2 in dic.items(0) print 2
    • @Dustin:不,这没有意义。字典是无序的。 OrderedDict 救援:docs.python.org/library/collections.html#ordereddict-objects
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2021-11-15
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多