簡體   English   中英

如何更改元組中的第一個元素,它是字典中的鍵?

[英]How to change the first element in a tuple that is a key in a dictionary?

我需要將元組的第一個元素設置為current ,這是字典中的鍵。

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

我需要在循環代碼之前將'a'設置為current變量。 我怎樣才能做到這一點?

您不能修改密鑰本身,因為它是不可變的對象。 而是用新的密鑰替換字典密鑰,例如:

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

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

或一步:

d[key2] = d.pop(key1)

如果要遍歷所有字典以僅通過元組鍵中的第一項來更新它們。

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

您是否要從字典中訪問“ 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'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM