Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 把清单变成字典_Python_Python 3.x_List_Dictionary - Fatal编程技术网

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'}