Python 从字典创建元组列表?

Python 从字典创建元组列表?,python,dictionary,casting,nested,tuples,Python,Dictionary,Casting,Nested,Tuples,我有一本简单的字典: {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}} 我想将其编码为“上下文感知”元组: 我尝试使用ValueError:要解压缩的值太多: 如何创建这个元组列表?我想要一个生成器: mydict = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}} def unnest(d): for outerke

我有一本简单的字典:

{"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
我想将其编码为“上下文感知”元组:

我尝试使用ValueError:要解压缩的值太多:


如何创建这个元组列表?我想要一个生成器:

mydict = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

def unnest(d):
   for outerkey in d.iterkeys():
       for innerkey, value in d[outerkey].iteritems():
           yield outerkey, innerkey, value

mytuplelist = list(unnest(mydict))
或者,您当然可以将其放在列表中:

mytuplelist = [(outerkey, innerkey, value) for outerkey in mydict.iterkeys() 
               for (innerkey, value) in mydict[outerkey].iteritems()]
dict1 = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

print [(key1, key2, dict1[key1][key2]) for key1 in dict1 for key2 in dict1[key1]]

我喜欢这台发电机:

mydict = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

def unnest(d):
   for outerkey in d.iterkeys():
       for innerkey, value in d[outerkey].iteritems():
           yield outerkey, innerkey, value

mytuplelist = list(unnest(mydict))
或者,您当然可以将其放在列表中:

mytuplelist = [(outerkey, innerkey, value) for outerkey in mydict.iterkeys() 
               for (innerkey, value) in mydict[outerkey].iteritems()]
dict1 = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

print [(key1, key2, dict1[key1][key2]) for key1 in dict1 for key2 in dict1[key1]]

使用列表理解:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
输出:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
使用简单For In循环:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
输出:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]

使用列表理解:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
输出:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
使用简单For In循环:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
输出:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

mytuplelist=[(key,y,mydict[key][y]) for key in mydict for y in mydict[key]]

print (mytuplelist)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
dic={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
lis=[]
for x in dic:
  for y in dic[x]:
      lis.append((x,y,dic[x][y]))
print(lis)
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]
要修复代码,请执行以下操作:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key" : "value"}}
mytuplelist = [(outer, inner, val) for outer, d in mydict.iteritems() 
          for inner, val in d.iteritems()]
print mytuplelist
请参阅kindall关于如何以简单方式完成此操作的答案:)

要修复代码:

mydict={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key" : "value"}}
mytuplelist = [(outer, inner, val) for outer, d in mydict.iteritems() 
          for inner, val in d.iteritems()]
print mytuplelist

请参阅kindall关于如何以简单方式执行此操作的回答:)

以下示例将创建元组列表,如您所示:

mydict = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
tuplelist = []
for outer, dct in mydict.iteritems():
    tuplelist.extend((outer, key, val) for key, val in dct.iteritems())

以下示例将创建如您所示的元组列表:

mydict = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
tuplelist = []
for outer, dct in mydict.iteritems():
    tuplelist.extend((outer, key, val) for key, val in dct.iteritems())
通过更正您的输入错误(上一个嵌套的dict中缺少
,这可能是导致“项目太多而无法解包”的原因之一),您可以恢复列表理解:

mytuplelist = [(outerkey, innerkey, value) for outerkey in mydict.iterkeys() 
               for (innerkey, value) in mydict[outerkey].iteritems()]
dict1 = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

print [(key1, key2, dict1[key1][key2]) for key1 in dict1 for key2 in dict1[key1]]
通过更正您的输入错误(上一个嵌套的dict中缺少
,这可能是导致“项目太多而无法解包”的原因之一),您可以恢复列表理解:

mytuplelist = [(outerkey, innerkey, value) for outerkey in mydict.iterkeys() 
               for (innerkey, value) in mydict[outerkey].iteritems()]
dict1 = {"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}

print [(key1, key2, dict1[key1][key2]) for key1 in dict1 for key2 in dict1[key1]]

使用列表理解

>>> D={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
>>> [(i,)+j for i in D for j in D[i].iteritems()]
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]

使用列表理解

>>> D={"keyy":{"key": "value", "cey": "value"}, "kaye":{"key": "value"}}
>>> [(i,)+j for i in D for j in D[i].iteritems()]
[('keyy', 'cey', 'value'), ('keyy', 'key', 'value'), ('kaye', 'key', 'value')]

tuple(k,v,val)
应该是
(k,v,val)
nextYeah,我知道,我只是想显式地展示我试图做的事情。这是非常明确的,因为
tuple(k,v,val)
是一个类型错误:-]哦,我不知道
tuple(k,v,val)
应该是
(k,v,val)
nextYeah,我知道,只是想显式地显示我正在尝试做的事情。这是非常明确的,因为
tuple(k,v,val)
是一个类型错误:-]哦,我不知道!谢谢,这(还有另外两个)很好D-为了帮助我决定接受哪一个,你们认为你们中的任何人都可以把它归结为一行吗P@user1438003我使用了列表理解,这是一行。我写了一个与列表理解相同的答案。这一个更完整,+1谢谢,这(和另外两个)工作D-为了帮助我决定接受哪一个,你们认为你们中的任何人都可以把它归结为一行吗P@user1438003我使用了列表理解,这是一行。我写了一个与列表理解相同的答案。这个更完整,+1