Python - 如何在字典中使用try / except语句

时间:2015-08-09 02:45:29

标签: python dictionary try-catch

我试图这样做,但它没有用。只是为了澄清我希望值等于列表[0]如果它存在。感谢。

    dictionary = {
    try:
        value : list[0],
    except IndexError:
        value = None
    }

2 个答案:

答案 0 :(得分:5)

你必须把try..exept 放在的分配上;你不能把它放在像你这样的表达式中:

try:
    dictionary = {value: list[0]}
except IndexError:
    dictionary = {value: None}

或者,将作业移到一组单独的语句中:

dictionary = {value: None}
try:
    dictionary[value] = list[0]
except IndexError:
    pass

或明确测试list的长度,以便您只需使用条件表达式选择None

dictionary = {
    value: list[0] if list else None,
}

如果列表对象不为空,则if list测试为真。

您还可以使用itertools.izip_longest() function(Python 3中的itertools.zip_longest())来配对键和值;它会在最短序列上整齐地切断,并为缺少的元素填写None值:

from itertools import izip_longest
dictionary = dict(izip_longest(('key1', 'key2', 'key3'), list_of_values[:3]))

此处,如果list_of_values没有3个值,则其匹配键会自动设置为None

>>> from itertools import izip_longest
>>> list_of_values = []
>>> dict(izip_longest(('key1', 'key2', 'key3'), list_of_values[:3]))
{'key3': None, 'key2': None, 'key1': None}
>>> list_of_values = ['foo']
>>> dict(izip_longest(('key1', 'key2', 'key3'), list_of_values[:3]))
{'key3': None, 'key2': None, 'key1': 'foo'}
>>> list_of_values = ['foo', 'bar']
>>> dict(izip_longest(('key1', 'key2', 'key3'), list_of_values[:3]))
{'key3': None, 'key2': 'bar', 'key1': 'foo'}
>>> list_of_values = ['foo', 'bar', 'baz']
>>> dict(izip_longest(('key1', 'key2', 'key3'), list_of_values[:3]))
{'key3': 'baz', 'key2': 'bar', 'key1': 'foo'}

答案 1 :(得分:0)

您实际上可以使用'in'关键字来查看某些内容是否作为字典中的键存在

if list[0] in dictionary:
    value = list[0]
else:
    value = None

请注意,避免使用'list'作为变量名。

以下是您正在尝试做的事情我假设:

new_dictionary = dict()
if list[0] in dictionary:
    new_dictionary['value'] = list[0]
else:
    new_dictioanry['value'] = None
相关问题