簡體   English   中英

如何將列表轉換為字典,其中某些鍵缺少其值?

[英]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.

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