[英]How to convert a list to dictionary where some keys are missing their values?
我有一個對象列表,它們的分數在分號后關聯。 嘗試將此列表轉換為字典,但某些鍵在轉換后將丟失其值。 嘗試使用try / except但不確定如何將值單獨存儲到字典中。
例:
t = ['Contact:10', 'Account:20','Campaign:', 'Country:', 'City:']
轉換時,Campaign和Country對象沒有值。 我想傳遞或指定NaN
作為字典值。
我嘗試過類似的東西,但沒有用。
for objects in t:
try:
dictionary = dict(objects.split(":") for objects in t)
except:
pass
任何建議表示贊賞。
你真的不需要嘗試/捕獲:
t = ['Contact:10', 'Account:20','Campaign:', 'Country:', 'City:']
{ a: b for a,b in (i.split(':') for i in t) }
這會產生:
{'Account': '20', 'Campaign': '', 'City': '', 'Contact': '10', 'Country': ''}
如果你想要None
而不是空字符串:
{ a: b if b else None for a,b in (i.split(':') for i in t) }
您可以將生成器表達式與每個項的拆分一起使用,並將輸出傳遞給dict
構造函數:
dict(i.split(':') for i in t)
返回:
{'Contact': '10', 'Account': '20', 'Campaign': '', 'Country': '', 'City': ''}
如果您希望將NaN指定為默認值,則可以使用dict理解來執行此操作:
{a: b or float('nan') for i in t for a, b in (i.split(':'),)}
返回:
{'Contact': '10', 'Account': '20', 'Campaign': nan, 'Country': nan, 'City': nan}
如果缺少該值,則它將是一個空字符串
>>> 'foo:'.split(':')
['foo', '']
所以這引導我們
data = {}
for pair in t:
key, value = pair.split(':')
data[key] = int(value) or float('nan')
這可以通過字典理解來清理一下。
import string
pairs = map(string.split, t)
data = {key: int(value) or float('nan') for key, value in pairs}
您也可以拒絕將這些鍵放在字典中
data = {}
for pair in t:
key, value = pair.split(':')
if value:
data[key] = int(value) or float('nan')
t = ['Contact:10', 'Account:20','Campaign:', 'Country:', 'City:']
d = {}
for obj in t:
field = obj.split(':')
d[field[0]] = field[1] if field[1] else None
print(d)
輸出:
{'Country': '', 'City': '', 'Campaign': '', 'Account': '20', 'Contact': '10'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.