python如何將列表轉為字典,key值相同則合併value

時間 2021-05-07 20:00:36

1樓:匿名使用者

a='齊建國 齊建國 齊二石 黃魯成 黃津孚'.split()b=[13,33,38,26,31]

d={}

for x in range(len(a)):

if a[x] in d:

d[a[x]]+=[b[x]]

else:

d[a[x]]=[b[x]]

print(d)

2樓:匿名使用者

單純從資料結構上來講的話,字典的資料結構是雜湊,也就是雜湊表,它是無序的,而列表的資料結構是連結串列,是有序的,所以想把字典轉換成列表並且保持順序不變,是不可行的。

題主可以使用ordereddict(python 2.7+)有序字典,ordereddict是dict的子類,它記住了內容新增的順序。

另外如果想把字典的key轉換成列表,使用dict.keys()就可以了。

3樓:aaa軟體教育

python是當下十分火爆的程式語言,尤其在人工智慧應用方面。如果有心從事程式設計方向的工作,最好到專業機構深入學習、多實踐,更貼近市場,這樣更有利於將來的發展。

python列表中字典按指定相同的鍵值對合併到一個列表中

4樓:

使用集合去重 + local動態變數設定 + exec 字串解析 可實現,話不多說,**在下面,格式有問題調整下空格:

list_msg = [,

,,,]

# 去除字典重複的data ,獲取資料包含多少天內容

set_mark =

# 去除非法命名字元作為列表字尾:

ver_name = [i.replace('-','_') for i in set_mark]

# 給列表排序,確保按照順序輸出變數

ver_name.sort()

# 設定動態命名模板

list_name_template = 'list_data_'

# 建立local物件,準備建立動態變數

createver = locals()

# 迴圈遍歷資料並建立動態列表變數接收

for mark in set_mark:

# 動態建立變數

createver[list_name_template + mark.replace('-','_')] \

= [dict_current for dict_current in list_msg if dict_current['date'] == mark]

for name in ver_name:

print(list_name_template + name + ':' ,end='\t') # 列印自動建立的變數名稱,採用tab分隔

exec('print('+list_name_template + name +')') # 列印變數內容(列表)

'''列印結果

list_data_2019_08_17: [, ]

list_data_2019_08_18:

list_data_2019_08_19:'''

5樓:匿名使用者

如果對效率有要求,資料轉成dataframe來處理。對效率沒有要求,直接迴圈也行

6樓:慕桖秀敏

先說函式:dict(zip(列表1,列表2))列表1作為key,列表2作為value

下面看一下**:

#定義兩個列表

list1 = range(0,10)

list2 = range(10,20)

#合併為字典,呼叫dict(zip())

dict_name = dict(zip(list1,list2))print(dict_name)

執行結果:

7樓:匿名使用者

for迴圈遍歷一個一個取沒什麼好說的

python如何實現列表巢狀字典,字典內相同key去重,字典內另外一個key的value相加?

8樓:紫薇參星

按照你的要求編寫的字典內相同key合併的python程式如下l=[,,]

result=

temp=

for i in range(len(l)):

flag=false

suma=l[i]['a']

b=l[i]['b']

for j in range(i+1,len(l)):

if l[i]['b']==l[j]['b'] and (j not in temp):

flag=true

suma=suma+l[j]['a']

if i not in temp or flag==true:

print(result)

源**(注意源**的縮排)

如何把python list裡的元素變為字典的key和value,問題見補充

9樓:巴巴吖葩琦

python不建議在迴圈中修改列表中的值。會造成索引錯亂。

把列表中的哪些元素當做key,哪些元素當做value?

10樓:花花浪客

你的做法是正確的,只是下標越界了

你的b只有3個元素,所以for j in range(0,2000000)這個迴圈到第四次,j=3的時候b[j][0]就下標越界了。

這裡有個類似的問題,可以參考看看

11樓:匿名使用者

tracb={}

for item in b:

traceb

如何將ecel表中的兩列並一列,如何將EXCEL表中的兩列並一列

天堂滴落的眼淚 可以用合併公式 來實現,操作步驟如下 工具 2010版excel 1 先開啟excel,以下圖為例,需要在a3單元格顯示 1234 2 選中a3單元格,並輸入公式 a1 a2 3 按下回車鍵後就可以得到結果了。 凡雲曉 在a3輸入 a1 a2或者 a2 a1 concatenate函...

如何將excel的一列除以同數,如何將excel的一列除以同一個數

墨汁諾 在第一個空格輸入 被除數 除數 假如列在a列,數字以a1起,要除以2。那麼在b1可以直接輸入 a1 2向下填充或者複製,daob列就是商。例如 a列為要除的資料,在b列中的b1新增公式 a1 x x即分母 將滑鼠移到a1單元礦的右下角,可看到它變為黑色十字,向下拖拽即可將公式複製到b列一下的...

excel中如何將資料1列轉成3列

offset a 1,column 2 2 row 1 假設你資料在a1 9 b1輸入 左拉到d 再下拉就好了 我這裡就示範一下 具體的你可以根據你表來寫的 總數除以3,然後剪下 貼上。 萊昂納德 尤拉 c1輸入 c2輸入 c3輸入 選中c1到c3,往下填充公式即可 樓主看看 中區域b15 d18是...