[英]converting dictionary values to list in Python
假设我有一个字典(dict),其键和值如下:
打印(dict)
{'AAA': {'', '111', '222'}, 'BBB': {'222', '999', '555'}}
我想以单个字符串的形式从字典中提取值,即type(values) = str
,例如:
values = '111', '222', '999', 555'
但是我得到的是在dict.values()
下面:
dict.keys()
dict_keys(['AAA', 'BBB'])
dict.values()
dict_values([{'', '111', '222'}, {'222', '999', '555'}])
如何获得所需的结果?
您可以使用itertools.chain
来做到这一点:
In [92]: from itertools import chain
In [93]: dct = {'AAA': {'', '111', '222'}, 'BBB': {'222', '999', '555'}}
In [94]: {x for x in chain(*dct.values()) if x}
Out[94]: {'111', '222', '555', '999'}
如果要将此输出转换为单个字符串,只需对其使用str()
调用,或", ".join(x for x in chain(*dct.values()) if x)
使用", ".join(x for x in chain(*dct.values()) if x)
如果您希望它们以单个字符串输出,我相信这就是您的追求:
mydict = {'AAA': {'', '111', '222'}, 'BBB': {'222', '999', '555'}}
out = []
for keys, values in mydict.items():
[out.append(i) for i in values if i!='']
out = ','.join(set(out))
print(out)
print(type(out))
输出:
555,222,111,999
<class 'str'>
你想要类似的东西吗
d = dict()
d[0] = '0'
str(d)
?
之后,字符串操作相当简单
只需使用extend
方法:
values = []
for key in some_dict:
values.extend(list(some_dict[key]))
如果需要删除空字符串,请使用:
values = list(filter(None, values))
查看此SE条目
然后,您可以根据需要将其转换为元组:)
这是不导入任何模块的另一种方法。
dict = {'AAA': {'', '111', '222'}, 'BBB': {'222', '999', '555'}}
result = []
print([[result.append(item) or item for item in one_set if item] for one_set in dict.values()])
print(','.join(result)) #all non '' elements
print(','.join(set(result))) #all non '' and non duplicated elements
输出:
[['222', '111'], ['222', '999', '555']]
222,111,222,999,555
222,999,555,111
[Finished in 0.181s]
您可以尝试在一行中理解列表:
data={'AAA': {'', '111', '222'}, 'BBB': {'222', '999', '555'}}
print(set([k for i,j in data.items() for k in j if k]))
输出:
{'222', '999', '111', '555'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.