2013-10-28 58 views
-1

讓我們假設我們有一個給定的字符串人名列表將所有的名稱標識符在Python

people = ["john", "mike", "patrick", "vince", "mike"] 

我想有,這裏的名字,而不是有將用於其他標識符此人的名單,例如:

people_ids = ["p1", "p2", "p3", "p4", "p2"] 

有我想指出兩件事情:

1)ID的格式並不重要,編號可以從0開始,如果它使事情變得更容易

2)當重複一個給定的名字,我想重複相應的ID,以及在同一位置people_ids

我該如何實現這一目標?最有可能使用一些字典的東西吧?

+0

你想* *生成的'people_ids'列表? –

+2

用'people = [「john」,「mike」,「patrick」,「vince」,「mike」]',你可以把他們稱爲vince [3]。意思是他的「id」是「3」。那麼問題就變成了爲什麼這還不夠? –

+0

你能給我們一個重複名稱的示例輸入和輸出嗎? –

回答

1

您正在尋找類似的東西

people = ["john", "mike", "patrick", "vince", "mike", "foo"] 

def build(l): 
    d = {} 
    i = 1 
    for p in people: 
     if not p in d: 
      d[p] = 'p' + str(i) 
      i += 1 
     yield d[p] 

people_ids = list(build(people))  
+0

@Xi Huan感謝您的回覆,這似乎工作正常......在'for'後的第一行爲什麼不使用'如果p不在d:'而不是'如果不是在d:'中,是否有一個語法和邏輯的區別?雖然 –

+1

@WolfgangKuehne'x not in y'和'not x in y'產生相同的字節碼,所以結果是一樣的,所以使用哪一個並不重要。最終這是個人喜好的問題。 – sloth

相關問題