2013-03-12 55 views
4

假設我有字典。我不知道里面的關鍵/價值。如何在不執行for循環的情況下獲得此鍵和值(字典中只有一個項目)。如何獲取只包含一個項目的字典的鍵/值對?

您可能想知道爲什麼我在這種情況下使用字典。我有我的API的字典,我不希望用戶迷路。這只是一個問題。否則,我會使用一個列表和索引。

+0

愚蠢的一致性... – 2017-02-19 03:00:41

回答

9

爲作業使用正確的數據類型。你的目標應該是有可行的代碼,而不是你在整個地方使用相同的數據類型。

如果你的字典裏只包含一個鍵和一個值,你可以得到要麼索引:

key = list(d)[0] 
value = list(d.values())[0] 

,或者同時獲得:

key, value = list(d.items())[0] 

需要的list電話因爲在Python 3中,.keys(),.values().items()返回字典視圖,而不是列表。

另一種選擇是使用序列拆封:

key, = d 
value, = d.values() 

或兩者在同一時間:

(key, value), = d.items() 
+0

我傾向於使用'(value,)= d.values()'解析迭代對象' – Kos 2013-03-12 16:27:34

+0

@Kos:很好的一個,補充。 – 2013-03-12 16:30:04

+1

每次我抑制自己不要將其格式化爲'a,= b'或「祕密解包 - 賦值運算符」:-) – Kos 2013-03-12 16:54:12

0

d.popitem()會給你一個關鍵的值元組。

+0

但是,這會將從'D'刪除它。 – 2013-03-12 16:19:49

+0

這是破壞性的 - 除了獲得它從字典中移除它的關鍵和價值之外。 – 2013-03-12 16:20:32

+1

d.copy()。popitem() – andsoa 2013-03-12 16:40:42

6

剛剛得到在字典中的第一個項目使用迭代

>>> d = {"foo":"bar"} 
>>> k, v = next(iter(d.items())) 
>>> k 
'foo' 
>>> v 
'bar' 
+1

時間戳說你是第一個。 :^) – DSM 2013-03-12 16:23:00

+0

+1也可以在集合中很好地工作 - 如果'dict'是空的,如果需要將默認參數設置爲'next',它也是可能的... – 2013-03-12 16:24:00

+0

看起來我只打了29秒。 .. – 2013-03-12 16:28:48

1

您可以這樣做:

>>> d={1:'one'} 
>>> k=list(d)[0] 
>>> v=d[k] 

作品在Python 2或3

相關問題