Skip to main content
 首页 » 编程设计

python之给定值可能是不同类型的字典,如何将 python 字典简洁地转换为元组列表

2025年05月04日29三少

重要提示:如果 value 是一个列表,那么我想为该 key 和其中的每个项目获取多个 key, value 元组列表。字典中的值将是多种类型,至少包括字符串、整数和列表。

我在下面有一个解决方案,但我想知道是否有更简洁的方法来做到这一点。

# Sample data 
d = {'key1': 'string1',  
    'key2': 15,  
    'key3': ['item1', 'item2', 'item3', 'item4']} 
 
# This code does what I want 
parameters = [] 
for k, v in d.iteritems(): 
    if isinstance(v, str): 
        parameters.append((k ,v)) 
    elif isinstance(v, int): 
        parameters.append((k, v)) 
    elif isinstance(v, list): 
        for x,y in zip(itertools.repeat(k), v): 
            parameters.append((x, y)) 
    else: 
        continue 
 
parameters 
# [('key1', 'string1'), 
#  ('key2', 15), 
#  ('key3', 'item1'), 
#  ('key3', 'item2'), 
#  ('key3', 'item3'), 
#  ('key3', 'item4')] 

请您参考如下方法:

我喜欢列表推导式的可读性。另外,我不明白为什么你需要一个单独的字符串和整数语句。要么你有一个列表,要么没有。

parameters = [] 
for k, v in d.iteritems(): 
  if isinstance(v, list): 
    parameters.extend([(k, i) for i in v]) 
  else: 
    parameters.append((k, v)) 

结果:

>>> parameters 
[('key3', 'item1'), ('key3', 'item2'), ('key3', 'item3'), ('key3', 'item4'), ('key2', 15), ('key1', 'string1')]