我在这里有一个字典:
dict = {'AB': 1, 'AE': '0', 'CC': '3'}
我正在尝试将该词典转换为确切的字符串格式:
AB1,AE0,CC3
我目前正在尝试:
string = ",".join(("{},{}".format(*i) for i in dict.items()))
但是我的输出是这样的:
AB,1,AE,0,CC,3
哪怕只是一点点。
有人知道将字典正确格式化为字符串的方法吗?
谢谢
答案 0 :(得分:3)
我们在这里(只需删除逗号):
d = {'AB': 1, 'AE': '0', 'CC': '3'}
output = ",".join(["{}{}".format(key, value) for key, value in d.items()])
# ^^^^
print(output)
这产生
AB1,AE0,CC3
或者使用原始的拆包方法:
output = ",".join(["{}{}".format(*x) for x in d.items()])
此外,请不要在内置对象(字典,列表,元组等)之后命名变量。
答案 1 :(得分:1)
代码:
setOrientation
输出:
dict = {'AB': 1, 'AE': '0', 'CC': '3'}
string=','.join([i+str(dict[i]) for i in dict])
print(string)
答案 2 :(得分:0)
想法是遍历字典的每个元素,然后将其键和值连接在一起。最后,将此串联值附加到列表中。
d = {'AB': 1, 'AE': '0', 'CC': '3'}
#initialize an empty list
l=[]
for i in d:
l.append(str(i)+str(d[i]))
获得此列表后,只需使用join()函数将其转换为字符串,其元素之间以逗号分隔即可。
out = ','.join(l)
print(out)
'AB1,AE0,CC3'
答案 3 :(得分:0)
更实用的解决方案:
# don't shadow `dict`
d = {'AB': 1, 'AE': '0', 'CC': '3'}
# `starmap` flattens argument to a function
# needed for `str.format`
from itertools import starmap
# build parts from dictionary items
parts = starmap('{}{}'.format, d.items())
# build end result from parts
result = ','.join(parts)
如果您想要一个可靠的解决方案,则应使用csv
模块并查看DictWriter
答案 4 :(得分:0)
如果使用的是Python 3,则可以使用所谓的f字符串。
d = {'AB': 1, 'AE': '0', 'CC': '3'}
out = ','.join([f'{i}{d[i]}' for i in d.keys()])
print(out)
输出:
AB1,AE0,CC3
如果您想了解有关f弦的更多信息,请参见此tutorial。请记住,此解决方案仅适用于Python 3.3和更高版本。