首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何更改作为字典中键的元组中的第一个元素?

如何更改作为字典中键的元组中的第一个元素?
EN

Stack Overflow用户
提问于 2018-11-22 16:02:49
回答 3查看 81关注 0票数 0

我需要将元组的第一个元素设置为current

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{('a', '0'): 'c',
 ('b', '0'): 'd',}

在循环代码之前,我需要将'a'设置为current变量。我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2018-11-22 16:05:41

您不能修改键本身,因为它是一个不可变的对象。相反,将字典键替换为新的字典键,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
key1, key2 = ('a', '0'), (current, 0)

d[key2] = d[key1]
del d[key1]

或者一步完成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
d[key2] = d.pop(key1)
票数 1
EN

Stack Overflow用户

发布于 2018-11-22 16:07:28

如果您想遍历所有字典以仅按元组关键字中的第一项更新它们。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
d = {('a', '0'): 'c', ('b', '0'): 'd',}

for key in d:
    new_key = key[0]
    d[new_key] = d.pop(key)

d
>>{'a': 'c', 'b': 'd'}

实际上,在这里,您删除了旧的键,并将其替换为一个新的键,其中您将元组的索引0作为新的键。

票数 0
EN

Stack Overflow用户

发布于 2018-11-22 19:13:34

您是否正在尝试从字典中访问'a‘?如果是,则可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list(d.keys())[0][0] 
>>> a

然而,如果上面不是你所需要的,但下面是。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{('a', '0'): 'a', ('b', '0'): 'd'}

您可以使用lambda或列表理解来完成此操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Lambda
d[('a', '0')] = list(map(lambda k: k[0], d))[0]
print(d)
>>> {('a', '0'): 'a', ('b', '0'): 'd'}

# list comprehension
d[('a', '0')] = [k[0] for k in d][0]
 >>> {('a', '0'): 'a', ('b', '0'): 'd'}

或者,您是否希望实现以下目标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{('b', '0'): 'd', ('c', '0'): 'a'}

同样,使用lambda或列表理解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Lambda
d[('a', '0')] = list(map(lambda k: k[0], d))[0]
d[('c', '0')] = d.pop(('a', '0'))
print(d)
>>> {('b', '0'): 'd', ('c', '0'): 'a'}

# list comprehension
d[('a', '0')] = [k[0] for k in d][0] 
d[('c', '0')] = d.pop(('a', '0'))
print(d)
>>> {('b', '0'): 'd', ('c', '0'): 'a'}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53434651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文