字典構造、合併(dict)、排序

 

使用dict,zip方法將兩個list合併爲dict
keys = ["b", "a", "c", "e", "d"]
values = ["2", "1", "3", "5", "4"]
dict(zip(keys, values))  #該dict是無序的

d=dict(zip(keys, values))
[(k,d[k]) for k in sorted(d.keys())] #按keys排序,升序
[(k,d[k]) for k in sorted(d.keys(),reverse=True)] #按keys排序,降序

按value排序:json

dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True)
print dict

 

 

dict()函數將包含有多個元組的list能夠轉換爲字典:函數

y=[('name','zhangsan'),('age',20)]
print dict(y) #返回{'age': 20, 'name': 'zhangsan'}

 

將兩個字典f一、f2合併,重複項的value相加,非重複項保留:spa

注:只能對數字格式的value值進行相加code

print f1 #返回{'10.160.31.31': 44, '10.160.100.3': 46, '10.160.100.2': 47, '::1': 92, '10.160.100.241': 8017, '127.0.0.1': 36}
print f2 #返回{'106.185.41.148': 1, '10.160.31.31': 36, '10.160.100.3': 44, '10.160.100.2': 44, '::1': 39, '111.201.171.47': 1, '10.160.100.241': 8005, '127.0.0.1': 47}

from collections import Counter
print dict(Counter(f1) + Counter(f2)) #返回{'106.185.41.148': 1, '10.160.31.31': 80, '10.160.100.3': 90, '10.160.100.2': 91, '::1': 131, '111.201.171.47': 1, '10.160.100.241': 16022, '127.0.0.1': 83}

字典合併,兩個字典中的key不能重複,不然會被後一個字典覆蓋掉:blog

d1={'k1':['abc'],'k2':'m'}
d2={'k11':['a'],'k22':'n'}
d3 = dict(d1,**d2)
print d3 #返回:{'k22': 'n', 'k2': 'm', 'k1': ['abc'], 'k11': ['a']}
#等同於以下:
# d3 = d1.copy()
# d3.update(d2)
#print d3

字典合併,value值爲list的能夠進行重複合併:排序

d1={'k1':['abc'],'k2':['m']}
d2={'k1':['a'],'k22':['n']}

d3= {}
for k,v in (d1.items() + d2.items()):
    if d3.get(k) is None:
        d3[k] = v
    else:
        d3[k].extend(v)
print d3
#返回:{'k22': ['n'], 'k2': ['m'], 'k1': ['abc', 'a']}

 

將字符串的dict轉換爲json格式:ip

udata = ‘{‘a’:'aa','b':'bbb'}’ #udata是string字符串

from ast import literal_evalget

udataj = literal_eval(udata) #udataj是dictstring

相關文章
相關標籤/搜索