Python 把清单变成字典
我有一份清单:Python 把清单变成字典,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有一份清单: ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII', 'Security', 'Airbag'] 我怎样把它变成字典? 我使用的列表类型与问题中描述的不同。 还有一些列表元素是空的,我需要在最终的字典中省略它们。如果您的模式总是像您描述的那样,您可以拆分“:”您的项目 my_list = ['Location: NY', 'price: 11103 USD', 'Year: 2018
['Location: NY',
'price: 11103 USD',
'Year: 2018',
'Model: Golf VII',
'Security',
'Airbag']
我怎样把它变成字典?
我使用的列表类型与问题中描述的不同。
还有一些列表元素是空的,我需要在最终的字典中省略它们。如果您的模式总是像您描述的那样,您可以拆分“:”您的项目
my_list = ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII']
my_dict = { i.split(': ')[0] : i.split(': ')[1] for i in my_list }
为空值添加:
您还可以将逻辑提取到函数中,并进行一些其他控件修剪、空值等操作,并且仍然使用字典理解,如下所示:
def str_to_keyval(inp, separator=':'):
# to list
li = inp.split(separator) if (separator in inp) else [inp, '']
# strip elements
return [i.strip() for i in li]
my_list = [
'Location: NY',
'price: 11103 USD',
'Year: 2018',
'Model: Golf VII',
'Security',
'Airbag'
]
my_dict = { str_to_keyval(i)[0] : str_to_keyval(i)[1] for i in my_list }
通过编辑示例中str_to_keyval函数的第一行,您可以更改空值的表示方式,忽略它们的键,或用空字符串等表示。实际上,它给出的空字符串是缺少的值。好的,所以首先需要做的是循环列表中的每个项目。使用for循环非常容易
for item in lst:
# do stuff with the item
之后,需要将该项分为键和值。键和值已经用冒号和空格分隔了,所以我将使用它拆分字符串
for item in lst:
split_item = item.split(": ")
key = split_item[0]
value = split_item[1]
# then you need to add the key and item to the dictionary
增加价值非常简单。只需定义新值:
dictionary = {} # just to initialize the dictionary, if you already initialized it, don't do this
for item in lst:
split_item = item.split(": ")
key = split_item[0]
value = split_item[1]
dictionary[key] = value
就是这样您可以使用do dict ComperExtension进行此应用程序 我的解决方案类似于@vahdet的答案,但是这个解决方案将处理键或值中可能出现的多个空格
l = ['Location: NY',
'price: 11103 USD',
'Year: 2018',
'Model: Golf VII']
dict( (x.split(':')[0].strip(), x.split(':')[1].strip()) for x in l )
您可以使用相同的dict理解来处理列表中的无效项,方法是检查:是否存在于列表中,并仅在项目有效时添加键值
l = ['Location: NY',
'price: 11103 USD',
'Year: 2018',
'Model: Golf VII',
'Security',
'Airbag']
print(dict((x.split(':')[0].strip(), x.split(':')[1].strip()) for x in l if ':' in x))
您可以使用split函数获取每个字符串的部分,以创建字典引用:
arr = ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII']
dict = {}
for i in range(0, len(arr)):
key, value = arr[i].split(": ")
dict[key] = value
print(dict)
在此列表中:
mylist = ['Location: NY',
'price: 11103 USD',
'Year: 2018',
'Model: Golf VII']
请尝试以下代码:
mydict = {}
for l in mylist:
a,b = l.split(': ')
mydict[a] = b
print(mydict)
输出:
{'Year': '2018', 'Model': 'Golf VII', 'price': '11103 USD', 'Location': 'NY'}
你可以用一个简单的理解来表达: 输出:
{'Location': 'NY', 'price': '11103 USD', 'Year': '2018', 'Model': 'Golf VII'}
你的问题在哪里?你尝试了什么?假设你有一个配对的列表,例如['Location','NY',…]。你们知道如何得到这个列表,以及如何从那个里得到一个dict吗?可能的重复,它并没有重复,检查它已经并尝试了所有这些…若列表中有空元素…这就是为什么所有这些都不起作用的原因,所以,它们有多空?还有钥匙吗?完全是空字符串?我已经编辑了我的问题。键存在,但缺少值。这些空元素也缺少分隔符。此网站通常不支持仅使用代码的答案。请编辑您的答案,包括一些注释或对代码的解释,好吗?解释应该回答这样的问题:它做什么?它是如何做到的?它去哪里了?它如何解决OP的问题?请参阅:。谢谢这给了我ValueError:字典更新序列元素4的长度为1;2是required@Harvey请发布您正在使用的输入。我在创建问题几分钟后发布了更新。一行解决方案。非常感谢。
my_list = ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII']
result = dict(i.split(': ') for i in my_list)
{'Location': 'NY', 'price': '11103 USD', 'Year': '2018', 'Model': 'Golf VII'}