python字典合并
① python中,如何将多个字典组合成一个字典
Python编程将多个字典文件合并成一个字典文件,代码如下:
//例子:合并a.txt和b.txt两个字典文件
defreadf(filename):
lines=file(filename).readlines()
dic={}
foriinlines:
i_=i.split()
dic[i_[0]]=int(i_[1])
returndic
dica=readf('a.txt')
dicb=readf('b.txt')
lines=[]
foriindica:
percent=str(float(dicb[i])*100/dica[i])+'%'
s=''.join([i,str(dica[i]),str(dicb[i]),percent])
s+=' '
lines.append(s)
//合并成一个字典文件c.txt
withopen('c.txt','w')asf:
f.writelines(lines)
f.close()
② python列表中字典按指定相同的键值对合并到一个列表中
使用集合去重 + local动态变量设置 + exec 字符串解析 可实现,话不多说,代码在下面,格式有问题调整下空格:
list_msg = [{'date':'2019-08-17', 'type':'旅游', 'over_im':'12365'},
{'date':'2019-08-17', 'type':'haha', 'over_im':'12365'},
{'date':'2019-08-18', 'type':'娱乐', 'over_im':'11234'},{'date':'2019-08-19', 'type':'生活', 'over_im':'9532'},]
# 去除字典重复的data ,获取数据包含多少天内容
set_mark = {i['date'] for i in list_msg}
# 去除非法命名字符作为列表后缀:
ver_name = [i.replace('-','_') for i in set_mark]
# 给列表排序,确保按照顺序输出变量
ver_name.sort()
# 设置动态命名模板
list_name_template = 'list_data_'
# 创建local对象,准备创建动态变量
createver = locals()
# 循环遍历数据并创建动态列表变量接收
for mark in set_mark:
# 动态创建变量
createver[list_name_template + mark.replace('-','_')] \
= [dict_current for dict_current in list_msg if dict_current['date'] == mark]
for name in ver_name:
print(list_name_template + name + ':' ,end='\t') # 打印自动创建的变量名称,采用tab分隔
exec('print('+list_name_template + name +')') # 打印变量内容(列表)
'''
打印结果
list_data_2019_08_17: [{'date': '2019-08-17', 'type': '旅游', 'over_im': '12365'}, {'date': '2019-08-17', 'type': 'haha', 'over_im': '12365'}]
list_data_2019_08_18: [{'date': '2019-08-18', 'type': '娱乐', 'over_im': '11234'}]
list_data_2019_08_19: [{'date': '2019-08-19', 'type': '生活', 'over_im': '9532'}]
'''
③ Python中,如何合并两个键相同,值为元祖类型的字典
你好,下面是对应的代码:把元祖变成list合并
C = {}
for key in list(set(dicxs) | set(diccj)):
if dicxs.get(key) and diccj.get(key):
C[key]= list(dicxs[key])+list(diccj[key])
elif dicxs.get(key):
C[key]=list(dicxs[key])
else:
C[key]=list(diccj[key])
④ python中 怎么对字典中key具有包含关系的字符串进行合并
1.
python中一个字典不能有同一个键对应多个值的情况存在.
你给的样例若直接赋值给某个字典变量将会是如下效果:
>>>
d
=
{'abcd':[1,2,3],'bcd':[1,2,3],'abcd':[2,3,4],'bcd':[2,3,4]}
>>>
d
{'abcd':
[2,
3,
4],
'bcd':
[2,
3,
4]}
>>>
同键的后值覆盖前值;
2.
字典合并操作要视你的合并算法而定,例如:
>>>
d0
=
{'abcd':[1,2,3],'bcd':[1,2,3]}
>>>
d1
=
{'abcd':[2,3,4],'bcd':[2,3,4]}
>>>
#
列表叠加:
>>>
for
k,v
in
d1.items():
...
d0[k]
=
d0.get(k,[])+v
...
>>>
d0
{'abcd':
[1,
2,
3,
2,
3,
4],
'bcd':
[1,
2,
3,
2,
3,
4]}
>>>
#
合并为无重复项的条目
>>>
for
k,v
in
d1.items():
...
d0[k]
=
list(set(d0.get(k,[])+v))
>>>
d0
=
{'abcd':[1,2,3],'bcd':[1,2,3]}
>>>
for
k,v
in
d1.items():
...
d0[k]
=
list(set(d0.get(k,[])+v))
...
>>>
d0
{'abcd':
[1,
2,
3,
4],
'bcd':
[1,
2,
3,
4]}
>>>
⑤ Python将两个字典合并成一个字典
d1={'tudou':3,'yangcong':1,'mitao':8}
d2={'mitao':3,'pantao':5,'wutongshu':2,'lian':1}
d1.update(d2)
这个d2就追加到d1里了,但是update返回的是None,是更新了d1的内容,请注意使用
如果d1和d2有重复的键,则会重写。
⑥ 利用Python进行数据分析笔记:3.1数据结构
元组是一种固定长度、不可变的Python对象序列。创建元组最简单的办法是用逗号分隔序列值:
tuple 函数将任意序列或迭代器转换为元组:
中括号 [] 可以获取元组的元素, Python中序列索引从0开始 :
元组一旦创建,各个位置上的对象是无法被修改的,如果元组的一个对象是可变的,例如列表,你可以在它内部进行修改:
可以使用 + 号连接元组来生成更长的元组:
元组乘以整数,则会和列表一样,生成含有多份拷贝的元组:
将元组型的表达式赋值给变量,Python会对等号右边的值进行拆包:
拆包的一个常用场景就是遍历元组或列表组成的序列:
*rest 用于在函数调用时获取任意长度的位置参数列表:
count 用于计量某个数值在元组中出现的次数:
列表的长度可变,内容可以修改。可以使用 [] 或者 list 类型函数来定义列表:
append 方法将元素添加到列表尾部:
insert 方法可以将元素插入到指定列表位置:
( 插入位置范围在0到列表长度之间 )
pop 是 insert 的反操作,将特定位置的元素移除并返回:
remove 方法会定位第一个符合要求的值并移除它:
in 关键字可以检查一个值是否在列表中;
not in 表示不在:
+ 号可以连接两个列表:
extend 方法可以向该列表添加多个元素:
使用 extend 将元素添加到已经存在的列表是更好的方式,比 + 快。
sort 方法可以对列表进行排序:
key 可以传递一个用于生成排序值的函数,例如通过字符串的长度进行排序:
bisect.bisect 找到元素应当被插入的位置,返回位置信息
bisect.insort 将元素插入到已排序列表的相应位置保持序列排序
bisect 模块的函数并不会检查列表是否已经排序,因此对未排序列表使用bisect不会报错,但是可能导致不正确结果
切片符号可以对大多数序列类型选取子集,基本形式是 [start:stop]
起始位置start索引包含,结束位置stop索引不包含
切片还可以将序列赋值给变量:
start和stop可以省略,默认传入起始位置或结束位置,负索引可以从序列尾部进行索引:
步进值 step 可以在第二个冒号后面使用, 意思是每隔多少个数取一个值:
对列表或元组进行翻转时,一种很聪明的用法时向步进值传值-1:
dict(字典)可能是Python内建数据结构中最重要的,它更为常用的名字是 哈希表 或者 关联数组 。
字典是键值对集合,其中键和值都是Python对象。
{} 是创建字典的一种方式,字典中用逗号将键值对分隔:
你可以访问、插入或设置字典中的元素,:
in 检查字典是否含有一个键:
del 或 pop 方法删除值, pop 方法会在删除的同时返回被删的值,并删除键:
update 方法将两个字典合并:
update方法改变了字典元素位置,对于字典中已经存在的键,如果传给update方法的数据也含有相同的键,则它的值将会被覆盖。
字典的值可以是任何Python对象,但键必须是不可变的对象,比如标量类型(整数、浮点数、字符串)或元组(且元组内对象也必须是不可变对象)。
通过 hash 函数可以检查一个对象是否可以哈希化(即是否可以用作字典的键):
集合是一种无序且元素唯一的容器。
set 函数或者是用字面值集与大括号,创建集合:
union 方法或 | 二元操作符获得两个集合的联合即两个集合中不同元素的并集:
intersection 方法或 & 操作符获得交集即两个集合中同时包含的元素:
常用的集合方法列表:
和字典类似,集合的元素必须是不可变的。如果想要包含列表型的元素,必须先转换为元组:
⑦ python求合并这两个字典
dict1={'1': ('a', 'b', 'c', 'd'), '2': ('f', 'w', 'm'), '3':( 'p', 'l', 'w')}
dict2={'1': ('b', 'w', 'q'), '2':( 'i', 'z', 'm'), '3':( 'p', 'w', 'o')}
dict={}
for key in dict1.keys():
dict[key]=list(dict1[key])
for key in dict2.keys():
if dict.has_key(key):
#append
for v in dict2[key]:
if not v in dict[key]:
dict[key].append(v)
else:
dict[key]=list(dict2[key])
print dict
⑧ Python中,如何合并两个键相同,值为元祖类型的字典
假设原键是
key
新建是
newkey
先删除原键值对,保存值,然后以新键插入字典
操作可以合并成一条一句
dict[newkey]
=
dict.pop(key)
⑨ 如何合并python字典里的列表中的元素
l2 = l1[:2]
l2.append(''.join(l1[2:]))
# l1是原列表,l2是处理后的列表