如何更改元组中的第一个元素,它是字典中的键?

时间:2018-11-22 16:02:49

标签: python dictionary tuples

我需要将元组的第一个元素(即字典中的键)设置为current

{('a', '0'): 'c',
 ('b', '0'): 'd',}

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

3 个答案:

答案 0 :(得分:1)

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

key1, key2 = ('a', '0'), (current, 0)

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

或一步:

d[key2] = d.pop(key1)

答案 1 :(得分:0)

如果您要遍历所有字典以仅通过元组键中的第一项来更新它们。

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用作新键。

答案 2 :(得分:0)

您是否要从字典中访问“ a”? 如果是,则可以执行以下操作:

list(d.keys())[0][0] 
>>> a

但是;如果以上不是您的要求,但以下是要求。

{('a', '0'): 'a', ('b', '0'): 'd'}

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

# 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'}

或者您正在寻求实现以下目标:

{('b', '0'): 'd', ('c', '0'): 'a'}

再次使用lambda或具有列表理解功能:

# 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'}