列表去重dict元素
[dict(t) for t in set([tuple(d.items()) for d in list])]
list下套dict,判断dict中元素数据
# 以li 中的keyword为准,以li_2的hint为准。获得新的列表
li = [
{"keyword": "aaa", "hint": 1},
{"keyword": "bbb", "hint": 2},
{"keyword": "ccc", "hint": 3},
{"keyword": "ddd", "hint": 4},
{"keyword": "eee", "hint": 5},
]
li_2 = [
{"keyword": "bbb", "hint": 22},
{"keyword": "ccc", "hint": 33},
{"keyword": "ddd", "hint": 44},
{"keyword": "eee", "hint": 55},
]
dict_1 = {i.get("keyword"): i.get("hint") for i in li}
dict_2 = {i.get("keyword"): i.get("hint") for i in li_2}
# print(dict_1, dict_2)
dict_3 = [{"keyword": k, "hint": dict_2.get(k) if dict_2.get(k) else 0} for k, v in dict_1.items()]
print(dict_3)
类似json的怪异数据
import demjson
li = [
"{\n name:'aa',\n age:'11'}",
"{\n name:'bb',\n age:'22'}"
]
for i in li:
dic = demjson.decode(i)
print(dic, "***************")
获取到str的dict,list,元祖等
eval函数就是实现list、dict、tuple与str之间的转化
str函数把list,dict,tuple转为为字符串
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
b = "{1: 'a', 2: 'b'}"
print(type(eval(a)), eval(a))
print(type(eval(b)), eval(b))
a = '{"value":"2015","count":2,},{"value":"LTE2003","count":5,"desc":"2003\\u53ca\\u4ee5\\u524d"}, {"value":"2016","count":2,"desc":2016},{"value":"LTE2003","count":5,"desc":"2003\\u53ca\\u4ee5\\u524d"}'
data = list(eval(a))
print(data)
"""
[{'value': '2015', 'count': 2}, {'value': 'LTE2003', 'count': 5, 'desc': '2003及以前'}, {'value': '2016', 'count': 2, 'desc': 2016}, {'value': 'LTE2003', 'count': 5, 'desc': '2003及以前'}]
"""
列表根据子元素的value排序
li_1 = [{'keyword': 'a', 'hint': 6384},
{'keyword': 'b', 'hint': 831},
{'keyword': 'c', 'hint': 7448},
{'keyword': 'd', 'hint': 7873},
{'keyword': 'e', 'hint': 0},
]
li_2 = ["a","b","c","d","e"]
dic = {index: i for i, index in enumerate(li_2)}
newList = sorted(li_1, key=lambda x: dic[x.get("keyword")])
print(newList)
列表偶数位加2并返回列表
lis = [1, 2, 3, 4, 5, 6, 7, 8, 11]
print(list(map(lambda x: x[1] + 2 if not x[0] % 2 else x[1], enumerate(lis))))