Python 将列表转换为字典,字符串作为键,浮动作为值列表

Python 将列表转换为字典,字符串作为键,浮动作为值列表,python,list,dictionary,Python,List,Dictionary,我有以下清单: ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59] 我想创建一个dic,它使用字符串项作为键,后续浮动项作为值,其方式如下: {'dave': [78132168.51, 76751343.32], 'john': [2779712.24, 2042429.65, 2224123.33], 'mark':[

我有以下清单:

['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]
我想创建一个dic,它使用字符串项作为键,后续浮动项作为值,其方式如下:

{'dave': [78132168.51, 76751343.32], 'john': [2779712.24, 2042429.65, 2224123.33], 'mark':[20795797.19, 22111378.59]}
有人能帮忙吗?

试试这个

data = { your_data }
result = {}
for item in data:
    if isinstance(item,str): # Is it a key or a value?
        key = item # Remember the new key
        result[key] = [] # Initialize a list
    else:
        result[key].append(item) # Append the value

# {'dave': [78132168.51, 76751343.32], 'john': [2779712.24, 2042429.65, 2224123.33], 
#  'mark': [20795797.19, 22111378.59]}
lst = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

d = dict()
for item in lst:
    if isinstance(item, str):
        current_key = item
    if isinstance(item, float):
        if current_key not in d:
            d[current_key] = [item]
        else:
            d[current_key].append(item)

print(d)
结果:

{'dave': [78132168.51, 76751343.32], 'john': [2779712.24, 2042429.65, 2224123.33], 'mark': [20795797.19, 22111378.59]}
试试这个

lst = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

d = dict()
for item in lst:
    if isinstance(item, str):
        current_key = item
    if isinstance(item, float):
        if current_key not in d:
            d[current_key] = [item]
        else:
            d[current_key].append(item)

print(d)
结果:

{'dave': [78132168.51, 76751343.32], 'john': [2779712.24, 2042429.65, 2224123.33], 'mark': [20795797.19, 22111378.59]}
像这样的


类似于这样的东西会在列表中出现。如果找到名称-下一个找到的项目将附加到此结果\u dict[name]

orig = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

result_dict = dict()
name = None
for item in orig:
    if isinstance(item, str):
        name = item
        result_dict[name] = []
    else:
        result_dict[name].append(item)

它通过列表。如果找到名称-下一个找到的项目将附加到此结果\u dict[name]

orig = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

result_dict = dict()
name = None
for item in orig:
    if isinstance(item, str):
        name = item
        result_dict[name] = []
    else:
        result_dict[name].append(item)

这里有一个简单的方法。我们只需检查该值是否为字符串,然后进行相应的处理

如果是字符串:

data = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

database = dict()
name = ''

for item in data:
    if isinstance(item, str):
        database[(name := item)] = []
        continue
        
    database[name].append(item)
    
print(database)
  • 数据库中创建一个
    列表
    ,以字符串作为键
  • 使用海象(
    :=
    ~py3.8+)存储下一次迭代的名称
  • 跳过此迭代循环的其余部分
如果不是字符串

  • 跳过所有的字符串逻辑
  • 将当前项附加到我们存储的名称下的
    数据库中
示例:

data = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

database = dict()
name = ''

for item in data:
    if isinstance(item, str):
        database[(name := item)] = []
        continue
        
    database[name].append(item)
    
print(database)

这里有一个简单的方法。我们只需检查该值是否为字符串,然后进行相应的处理

如果是字符串:

data = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

database = dict()
name = ''

for item in data:
    if isinstance(item, str):
        database[(name := item)] = []
        continue
        
    database[name].append(item)
    
print(database)
  • 数据库中创建一个
    列表
    ,以字符串作为键
  • 使用海象(
    :=
    ~py3.8+)存储下一次迭代的名称
  • 跳过此迭代循环的其余部分
如果不是字符串

  • 跳过所有的字符串逻辑
  • 将当前项附加到我们存储的名称下的
    数据库中
示例:

data = ['dave', 78132168.51, 76751343.32, 'john', 2779712.24, 2042429.65, 2224123.33, 'mark', 20795797.19, 22111378.59]

database = dict()
name = ''

for item in data:
    if isinstance(item, str):
        database[(name := item)] = []
        continue
        
    database[name].append(item)
    
print(database)

你认为这个过程中的逻辑步骤是什么?什么部分你不能自己做?需要明确的是:告诉您在哪里停止每个列表值并读取下一个键的规则仅仅是基于数据类型的?您认为在这个过程中执行此操作的逻辑步骤是什么?什么部分你不能自己做?需要明确的是:告诉您在何处停止每个列表值并读取下一个键的规则仅基于数据类型?注意:
:=
需要python 3.8+注意:
:=
需要python 3.8+