簡體   English   中英

從字典中提取鍵/值對

[英]Extracting key/value pair from dictionary

好的,這是一個Python問題:

我們有一本字典:

my_dict = {
           ('John', 'Cell3', 5): 0, 
           ('Mike', 'Cell2', 6): 1, 
           ('Peter', 'Cell1', 6): 0, 
           ('John', 'Cell1', 4): 5, 
           ('Mike', 'Cell2', 1): 4, 
           ('Peter', 'Cell1', 8): 9
          }

如何制作另一個只包含名稱為“Peter”的鍵/值對的字典?

如果你將這個字典轉換為元組的元組列表,它會有所幫助嗎?

tupled = my_dict.items()

然后再把它變回字典?

你如何用列表理解來解決這個問題?

提前致謝!

試試這個,使用Python 2.7或更新版本中提供的字典理解

{ k:v for k,v in my_dict.items() if 'Peter' in k }

或者,如果我們確定名稱將始終位於第一個位置,我們可以執行此操作,這會更快一些:

{ k:v for k,v in my_dict.items() if k[0] == 'Peter' }

如果您使用的是舊版本的Python,我們可以使用生成器表達式和dict()構造函數的正確參數獲得等效結果:

dict((k,v) for k,v in my_dict.items() if k[0] == 'Peter')

無論如何,結果如預期:

=> {('Peter', 'Cell1', 8): 8, ('Peter', 'Cell1', 6): 0}

任何名字

def select(d, name):
    xs = {}
    for e in d:
        if e[0].lower() == name.lower(): xs[e] = d[e]

    return xs

d = {('Alice', 'Cell3', 3): 9,
     ('Bob', 'Cell2', 6): 8,
     ('Peter', 'Cell1', 6): 0,
     ('Alice', 'Cell1', 6): 4,
     ('Bob', 'Cell2', 0): 4,
     ('Peter', 'Cell1', 8): 8
    }

print select(d, 'peter')

>>>{('Peter', 'Cell1', 8): 8, ('Peter', 'Cell1', 6): 0}
{item for item in my_dict.iteritems() if item[0][0].lower() == 'peter'}

.iteritems遍歷dict,我們使用.lower匹配而不區分大小寫。

暫無
暫無

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

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