猿问

查找由dict.get返回的列表的第一个元素

我有一个字典,其值都是列表,我需要为给定键提取列表的第一个元素。

我一直在用

var = varDict.get(key, 0)

但是现在值是一个列表,我需要与值相同的var,现在它是列表的第一个元素。

我尝试了几种变体,主要涉及将方括号放在不同位置的方括号中,其中的数字不同,我的尝试是切片标记,然后以标准方式将其从列表中拉出,所有这些均导致dict.get每次都返回默认值,或者什么都没有。

从研究看来,这似乎并不是人们真正遇到的问题,我尝试了一些解决类似问题的方法,但是没有一个方法能够解决这些问题。

我也可以通过添加一条if语句并将其扩展很多来做到这一点,但是只要有一种内置的方式(我认为是可以做到的),我就希望代码保持整洁和最小化。实际可行。


一些背景

在这种特殊情况下,我的代码的完整片段是:

varDict[key] = [vardict.get(key, 0) + step,item2,item3]

您可能会在这里看到,我的目标是增加(或减少,取决于步骤的int值)与键相关联的列表/值中的值,覆盖列表的其他两个值,如果不存在则创建键。还不存在。


一些例子

根据moondra的要求,以下是一些预期输出的示例:

varDict空字典开始:

key = "test", step = 1, item2 = True, item3 = False

应导致:

varDict = {"test": [1, True, False]}

然后:

key = "test", step = 1, item2 = False, item3 = False

结果是:

varDict = {"test": [2, False, False]}

然后:

key = "words", step = -1, item2 = False, item3 = False

结果是:

varDict = {"test": [2, False, False], "words": [-1, False, False]}

不过,我想指出的是,我正在寻找问题的答案,而不是我的处境,因为回答我的问题可能会对发现并有相同问题的其他人有所帮助,而我的处境对我来说非常具体,现在。这个问题的答案应该可以帮助我解决我的情况。我想是因为我是低代表用户,所以人们认为我只是想解决我的问题(根据最近一些元文章中的吸血鬼评论),但是我只是低代表,因为我没有足够的经验来回答其他人问题和我的大多数问题都已经得到了解答,有效地限制了我赢得代表的方式。我在这个社区工作已经有好几年了,并且知道它是如何工作的,我只是无法回馈自己的方式我想。我绝不打算从这个社区中抽水,而我编辑:我也发现有趣的是,这与本meta post同时发生了。对于我来说,这将是一个更好的地方,我会把它移到那里,并附带一个巧合,那就是我也终于获得了足够的代表来获得特权“参加meta”,但是花了很多时间我读了该元文章,我失去了两个代表,使我无法参加,所以在这里我再次将不相关的信息添加到错误的位置,因为即使现在已经有一个帖子对我来说很完美,我仍然被排除在外。


宝慕林4294392
浏览 252回答 2
2回答

慕斯王

如果您试图构建一个新字典,其中值是列表字典的列表的第一个值,则可以使用理解。{key:lst[0] for key, lst in dct.items()}这将遍历字典中的项目,并使用相同的键创建一个新的字典,其中关联的值是原始字典列表中的第一个元素。
随时随地看视频慕课网APP

相关分类

Python
我要回答