从词典列表中获取特定值

时间:2019-12-19 17:33:34

标签: python list dictionary

我想获取一个值为'1222020'的特定值,该值以'Expiration'作为键: “到期”键可以放置在任何位置。

输入:

my_list=[{'Key': 'Expiration', 'Value': '12122020'}, {'Key': 'Name', 'Value': 'Config Test 2'}]

我的解决方案:

res = [sub['Value'] for sub in my_list if sub['Key'] =='Expiration' ]
print(res)

有时标签'Expiration'不存在。 如何处理并避免NoneType对象错误

2 个答案:

答案 0 :(得分:0)

如果您可以像这样重新组织数据,

custom_dict = {'Expiration': '12122020', 'Name': 'Config Test 2'}

然后,您可以编写如下代码,

def get_key_value_from_dictionary_search(dict_data, key_search_phrase, value_search_phrase):
    for k,v in dict_data.items():
       if k is key_search_phrase and v is value_search_phrase:
           return k, v

_k, _v = get_key_value_from_dictionary_search(custom_dict, "Expiration", "12122020")

print("Key : {}\nValue : {}".format(_k, _v))

答案 1 :(得分:0)

如果不存在somefile.csv.gz键,则您的package main import ( "bytes" "compress/gzip" "encoding/csv" "fmt" "io/ioutil" ) func main() { var buf bytes.Buffer zipWriter := gzip.NewWriter(&buf) csvwriter := csv.NewWriter(zipWriter) // <--- zip writer doesn't implement `io.writer` csvwriter.Write([]string{"a", "b\"fwr", "c"}) csvwriter.Write([]string{"a", "e", "ww"}) csvwriter.Flush() zipWriter.Flush() zipWriter.Close() fmt.Println(buf.Bytes()) zipReader, _ := gzip.NewReader(bytes.NewReader(buf.Bytes())) d, err := ioutil.ReadAll(zipReader) if err != nil { fmt.Println("err", err) } fmt.Println(string(d)) } 评估为空列表。因此,如果仅检查一个空列表中的存在项,就会知道Expiration是否从那里开始。

res