我试图这样做,但它没有用。只是为了澄清我希望值等于列表[0]如果它存在。感谢。
dictionary = {
try:
value : list[0],
except IndexError:
value = None
}
答案 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