在Python中用字符串创建字典的最佳方法

时间:2019-05-28 03:56:46

标签: python

我有以下字符串:

mystring = "freq1=440,freq2=425,freq3=410,freq4=0,freq5=0,freq6=0,freq7=0,freq8=0,freq9=0,freq10=0,freq11=0,freq12=0,freq13=0,freq14=0,freq15=0,freq16=0"

我想从中创建一个字典,以便可以访问mydict.freq1之类的值。

我可以很容易地拆分字符串:

splitstring = mystring.split(',')

所以我得到了

freq1=410
freq2=425
freq3=410
freq4=0

这似乎离我的需求还很远。是否有捷径可寻?我目前使用的是Python 2.7,但最终致力于向3.0的迁移。

3 个答案:

答案 0 :(得分:3)

代码:

dict(x.split('=') for x in my_string.split(','))

测试代码:

my_string = "freq1=440,freq2=425,freq3=410,freq4=0,freq5=0,freq6=0,freq7=0,freq8=0,freq9=0,freq10=0,freq11=0,freq12=0,freq13=0,freq14=0,freq15=0,freq16=0"
my_dict = dict(x.split('=') for x in my_string.split(','))
print(my_dict)

结果:

{'freq1': '440', 'freq2': '425', 'freq3': '410', 'freq4': '0', 'freq5': '0', 'freq6': '0', 'freq7': '0', 'freq8': '0', 'freq9': '0', 'freq10': '0', 'freq11': '0', 'freq12': '0', 'freq13': '0', 'freq14': '0', 'freq15': '0', 'freq16': '0'}

答案 1 :(得分:0)

代码:

mystring = "freq1=440,freq2=425,freq3=410,freq4=0,freq5=0,freq6=0,freq7=0,freq8=0 splitdic={} for value in mystring.split(','): splitdic[value.split("=")[0]]=value.split("=")[1] print(splitdic)

结果:

{'freq9': '0', 'freq8': '0', 'freq2': '425', 'freq5': '0', 'freq4': '0', 'freq6': '0', 'freq15': '0', 'freq1': '440', 'freq3': '410', 'freq11': '0', 'freq12': '0', 'freq16': '0', 'freq10': '0', 'freq13': '0', 'freq14': '0', 'freq7': '0'}

答案 2 :(得分:0)

mystring = "freq1=440,freq2=425,freq3=410,freq4=0,freq5=0,freq6=0,freq7=0,freq8=0,freq9=0,freq10=0,freq11=0,freq12=0,freq13=0,freq14=0,freq15=0,freq16=0"
res= {i.split('=')[0]:i.split('=')[1] for i in mystring.split(',') }

print(res)

输出

{'freq1': '440', 'freq2': '425', 'freq3': '410', 'freq4': '0',
 'freq5': '0', 'freq6': '0', 'freq7': '0', 'freq8': '0', 'freq9': '0',
 'freq10': '0', 'freq11': '0', 'freq12': '0',
 'freq13': '0', 'freq14': '0', 'freq15': '0', 'freq16': '0'}