当前位置: 首页 > 面试题库 >

是否可以一次将相同的值分配给dict对象中的多个键?

甘祺
2023-03-14
问题内容

在Python中,我需要一个类似于以下内容的字典对象:

{'a': 10, 'b': 20, 'c': 10, 'd': 10, 'e': 20}

我已经可以通过结合dict.update()和这样的dict.fromkeys()功能成功获得此功能:

myDict = {}
myDict.update(dict.fromkeys(['a', 'b', 'c'], 10))
myDict.update(dict.fromkeys(['b', 'e'], 20))

但是,由于该代码是为新手用户编写的,他们有时可能需要添加键/值,所以我更喜欢简单的准系统(类似于Perl)的语法,例如:

myDict = {}
myDict['a', 'c', 'd'] = 10
myDict['b', 'e'] = 20

但是,这给了我:

myDict = {('a', 'c', 'd'): 10, ('b', 'e'): 20}

有什么方法可以进一步简化我的第一个示例(使用dict.update()dict.fromkeys()),并获得我要查找的dict对象?

或者,或者,如果像我的第二个示例那样,我有一个包含元组的字典,是否有一种简单的方法让我进行诸如myDict['c']or的查找myDict.get('c')并获得值10?


问题答案:

我想说的是,您所拥有的 非常 简单,您可以将其稍微改善一下:

my_dict = dict.fromkeys(['a', 'b', 'c'], 10)
my_dict.update(dict.fromkeys(['b', 'e'], 20))

如果您的键是元组,则可以执行以下操作:

>>> my_dict = {('a', 'c', 'd'): 10, ('b', 'e'): 20}
>>> next(v for k, v in my_dict.items() if 'c' in k)      # use .iteritems() python-2.x
10

当然,这将返回第一个遇到的值,其键包含给定的元素。



 类似资料:
  • //VM args:-verbose:gc-xms20m-xmx20m-xmn10m-xx:+printgcdetails-xx:survivorratio=8-xx:+useg1gc 运行该程序我得到以下结果: [GC暂停(G1巨大分配)(年轻)(初始标记),0.0015208秒]...... 堆垃圾-第一堆总计20480K,已使用10816K[0x00000007BEC00000,0x0000

  • 我尝试用以下方法调用三个引用游标参数: 但是listOfObjects只包含cursor1的内容,无法获得cursor2的内容。

  • 我有一个numpy数组,一个定义数组中范围的开始/结束索引列表,以及一个值列表,其中值的数量与范围的数量相同。在循环中执行此赋值当前非常慢,因此我想以矢量化的方式将值赋给数组中的相应范围。这可能吗? 这是一个具体的简化示例: <代码>a=np。零([10]) 下面是定义a中范围的开始索引和结束索引列表,如下所示: 这是我想分配给每个范围的值列表: <代码>值=[1、2、3、4] 我有两个问题。首先

  • 这是我拥有的数据帧的简化版本: 在这个 df 中,row.names 是唯一的 ID(我知道它打破了整洁数据的规则)。 在示例中,我们可以看到行id1和行id2是重复的。 我想做的是确定它们是重复的,并为这些重复项分配一个唯一的组名称。但请注意,将有多行彼此重复。 我希望的产出是: 有什么想法吗? 编辑: 我的原始数据示例:

  • Gamma等人所说的设计模式 考虑对象聚合和熟悉之间的区别,以及它们在编译和运行时的表现方式。 聚合意味着一个对象拥有或负责另一个对象。一般来说,我们所说的一个物体具有或是另一个物体的一部分。聚合意味着聚合对象及其所有者具有相同的生存期。 熟人关系意味着一个对象仅仅知道另一个对象。有时熟人关系被称为“关联”或“使用”关系。熟人对象可能会请求彼此的操作,但它们并不对彼此负责。熟人关系比聚合关系弱,表

  • 因此,我昨天开始了一个问题:基于同一行中的值的多个pandas赋值,我想知道如何对一行数据进行排序,并将排序分配给同一行中的不同列。我已经按照Ed Chum的建议解决了这个问题:如何一次将一个函数应用于pandas数据帧中的多个列。 它确实起作用了,但我注意到我在这一过程中创建了错误的列。一旦我修复了这个bug,它就不再工作了。。。。 因此,我尝试在一个玩具示例上重现这个问题,但在玩具示例上也不起