2017-04-11 110 views
0

我有一個列表4dimension列表= [((1,2,3), 4, (0,2,3), 7) , ((9,4,5), 10, (3,8,7), 15), .......]。列表中的總行數是2000(長度)。當我它轉換爲兩個2D字典在python通過以下代碼: -轉換4D列表爲兩個二維字典,蟒蛇

for i in range(len(list)): 
     if list[i] is not None: 
     dic1[list[i][0]] = list[i][1] 
     dic2[list[i][2]] = list[i][3] 

最後將其轉換爲兩個2D字典後,並檢查2個字典的長度是不同的。 len(dic1) = 1660len(dic2) = 1770

爲什麼兩個詞典的長度有變化,但是它應該給出長度相等的兩個長度爲2000的詞典?

誰能幫我=我在獲得同等長度長的2D詞典(2000)

+1

因爲有些鍵可能發生衝突......如果您分配的關鍵'(1,2,3)'兩次**的最後一個值**被保留。 –

+1

因爲有一些關鍵出現一次又一次。字典商店只有一個相同的密鑰。 d = {「a」:1,「a」:2}' –

+0

2D字典甚至意味着什麼? –

回答

2

讓我們來看看下面的例子

some_dictionary = dict() 
some_dictionary[(1, 2)] = 'a' 
some_dictionary[(1, 2)] = 'b' 

所有some_dictionary後都會有一個關鍵(1, 2)和它的值將是'b'

如果您需要爲重複鍵收集不同的值,那麼您可以使用帶有值列表的字典,然後將每個新值附加到它們,如

keys = [(1, 2), 'a', (1, 2), 'b'] 
values = ['3', [10, 15], 'text', True] 
some_dictionary = dict() 
for key, value in zip(keys, values): 
    some_dictionary.setdefault(key, []).append(value) 

更多信息以docs

0

是,結果是正確的,因爲有一次又一次的和字典店只出現一個相同的密鑰的一些關鍵約dict.setdefault方法(即覆蓋以前的值)

演示:

>>> d = {"a":1, "a": 2} 
>>> d 
{'a': 2} 
>>> d["a"] = 4 
>>> d 
{'a': 4} 

可以使用二維數據的列表中,那麼我們將得到的二維數據的兩個列表長度相同。

演示:

>>> list_4d = [((1,2,3), 4, (0,2,3), 7) , ((9,4,5), 10, (1,3,4), 8)] 
>>> 
>>> list_2d_01 = [] 
>>> list_2d_02 = [] 
>>> 
>>> for item in list_4d: 
...  list_2d_01.append([item[0], item[1]]) 
...  list_2d_02.append([item[2], item[3]]) 
... 
>>> print "Length of list_2d_01:", len(list_2d_01) 
Length of list_2d_01: 2 
>>> print "Length of list_2d_01:", len(list_2d_02) 
Length of list_2d_01: 2 

注:

不要使用關鍵字作爲變量名。

list是關鍵字。不要用作變量名稱。

演示:

>>> list 
<type 'list'> 
>>> list001 = list() 
>>> list001 
[] 
>>> list = [1,2,3] 
>>> list002 = list() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'list' object is not callable 
>>>