如何跳过循环中没有值的键

时间:2019-03-29 08:41:55

标签: python python-3.x

我想在代码中节省一些空间,所以我写了这个简单的单行for循环。从k:[v,v]的字典中创建一个字典,其中第一个值是键,第二个值保持值。现在,我的字典中出现一个例外,即原始字典只有一个值,第一个。

glyphs_dict = {'dotaccent': [103, 86], 'ring': [104], 'caron': [105, 85]}
id_dict = {k:v for k,v in list(glyphs_dict.values())}

我试图做类似

id_dict = {k:v for k,v in list(glyphs_dict.values()) if k and v}

但不起作用。如何跳过列表中只有一个值的键?

4 个答案:

答案 0 :(得分:3)

您可以尝试以下操作:

id_dict = {v[0]:v[1] for v in glyphs_dict.values() if len(v) == 2}

如果长度为2(对于 key value ),这将获得dict的所有值作为新键和值

答案 1 :(得分:1)

这也有效:

glyphs_dict = {'dotaccent': [103, 86], 'ring': [104], 'caron': [105, 85]}
id_dict = {k: v[0] for k, *v in glyphs_dict.values() if v}

答案 2 :(得分:1)

如果值大于1,这将确保添加dict

id_dict = {key:value for key,value in glyphs_dict.items() if len(value)>1}

答案 3 :(得分:0)

这将不返回任何错误

max=255
step = 255//t
for i in range(0,t):
  red = 255 - (t*step)
  green = 0
  blue = 255 - red
  RGBtriplet = (red, green, blue)

输出:

   blue = 255 * (0.5 * (1 + sin((t*pi)-(pi/2))))
   green = 0
   red = 255 - blue

这将跳过带有一个值的列表的值,仅接受带有2的列表

id_dict = {k:v for k,v in list(glyphs_dict.values())}

输出:

{'dotaccent': [103, 86], 'ring': [104], 'caron': [105, 85]}