簡體   English   中英

Python中如何轉換字典中的列表

[英]How to convert Lists in dictionary in Python

我有兩個列表。 大小相同,其中可能沒有值。

我添加了兩個列表,一個列表是兩個列表的組合。

我想把它轉換成 Dic。

我希望 M1 作為鍵,第二個列表作為值。

我試過了,但是代碼縮小了它的大小

m1=['Date', 'PH', 'pC02', 'po2', 'cHCO3~', 'BE(ecf)', 'eSo2', 'Na+', 'K+', 'Cat+', 'ci-', 'cTco2', 'Het', 'cHgb', 'BE(b)', 'Glu', 'Lac', 'Crea', 'DH', 'pCo2', 'p02', 'ceHC03-', 'BE(ecf)', 'c$02', 'Na+', 'K+', 'Cat+', 'C1-', 'e1C02', 'Het', 'cHgb', 'BE(b)', 'Glu', 'Lac', 'Crea', 'Card', 'Last', 'Reader:', 'Host:', 'Sensor']

t1=[('22', '20'), ('7.465', None), ('29.0', None), ('181.0', None), ('20.9', None), ('2.9', None), ('99.7', None), ('131', None), ('2.6', None), ('0.41', None), ('101', None), ('21.8', None), ('32', None), ('10.9', None), ('2.0', None), ('38', None), ('0.30', None), ('0.57', None), ('7.350', '7.450'), ('35.0', '48.0'), ('83.0', '108.0'), ('21.0', '28.0'), ('2.0', '3.0'), ('94.0', '98.0'), ('138', '146'), ('3.5', '4.5'), ('1.15', '1.33'), ('98', '107'), ('22.0', '29'), ('38', '51'), ('12.0', '17.0'), ('2.0', '3.0'), ('74', '100'), ('0.56', '1.39'), ('9.51', '1.19'), ('01', '20033'), ('22', '20'), ('04205', '2.2'), ('10', '7'), ('35.3', None)]

d3={}
for i in range(len(m1)):
    d3[m1[i]]=t1[i]

兩個列表的實際長度都是 40,但是,

len(d3) 變為 30 並且缺少某些值

我找不到問題。 提前致謝

由於您在m1中有重復的值,因此您在字典中獲得的條目較少。 這可以通過從列表中構建一個set並檢查其長度來輕松檢查:

len(set(m1))
# 30

請注意,將兩個列表合並到字典中的一種更簡單的方法是zip它們並根據結果構建字典:

d3 = dict(zip(m1,t1))

這本質上是在做:

d3 = dict()
for k,v in zip(m1,t1):
    d3[k] = v

如果您想捕獲所有值,請使用以list作為值的字典

前任:

m1=['Date', 'PH', 'pC02', 'po2', 'cHCO3~', 'BE(ecf)', 'eSo2', 'Na+', 'K+', 'Cat+', 'ci-', 'cTco2', 'Het', 'cHgb', 'BE(b)', 'Glu', 'Lac', 'Crea', 'DH', 'pCo2', 'p02', 'ceHC03-', 'BE(ecf)', 'c$02', 'Na+', 'K+', 'Cat+', 'C1-', 'e1C02', 'Het', 'cHgb', 'BE(b)', 'Glu', 'Lac', 'Crea', 'Card', 'Last', 'Reader:', 'Host:', 'Sensor']
t1=[('22', '20'), ('7.465', None), ('29.0', None), ('181.0', None), ('20.9', None), ('2.9', None), ('99.7', None), ('131', None), ('2.6', None), ('0.41', None), ('101', None), ('21.8', None), ('32', None), ('10.9', None), ('2.0', None), ('38', None), ('0.30', None), ('0.57', None), ('7.350', '7.450'), ('35.0', '48.0'), ('83.0', '108.0'), ('21.0', '28.0'), ('2.0', '3.0'), ('94.0', '98.0'), ('138', '146'), ('3.5', '4.5'), ('1.15', '1.33'), ('98', '107'), ('22.0', '29'), ('38', '51'), ('12.0', '17.0'), ('2.0', '3.0'), ('74', '100'), ('0.56', '1.39'), ('9.51', '1.19'), ('01', '20033'), ('22', '20'), ('04205', '2.2'), ('10', '7'), ('35.3', None)]

d3 = {}
for k, v in zip(m1, t1):
    d3.setdefault(k, []).append(v)  #You can also use collections.defaultdict here
print(d3)

Output:

{'BE(b)': [('2.0', None), ('2.0', '3.0')],   #note multiple values for single key
 'BE(ecf)': [('2.9', None), ('2.0', '3.0')],  #note multiple values for single key
 'C1-': [('98', '107')],
 'Card': [('01', '20033')],
 'Cat+': [('0.41', None), ('1.15', '1.33')],
 'Crea': [('0.57', None), ('9.51', '1.19')],
 'DH': [('7.350', '7.450')],
 'Date': [('22', '20')],
 'Glu': [('38', None), ('74', '100')],
 'Het': [('32', None), ('38', '51')],
 'Host:': [('10', '7')],
 'K+': [('2.6', None), ('3.5', '4.5')],
 'Lac': [('0.30', None), ('0.56', '1.39')],
 'Last': [('22', '20')],
 'Na+': [('131', None), ('138', '146')],
 'PH': [('7.465', None)],
 'Reader:': [('04205', '2.2')],
 'Sensor': [('35.3', None)],
 'c$02': [('94.0', '98.0')],
 'cHCO3~': [('20.9', None)],
 'cHgb': [('10.9', None), ('12.0', '17.0')],
 'cTco2': [('21.8', None)],
 'ceHC03-': [('21.0', '28.0')],
 'ci-': [('101', None)],
 'e1C02': [('22.0', '29')],
 'eSo2': [('99.7', None)],
 'p02': [('83.0', '108.0')],
 'pC02': [('29.0', None)],
 'pCo2': [('35.0', '48.0')],
 'po2': [('181.0', None)]}

暫無
暫無

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

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