【问题标题】:extracting a tuple from a dictionary with a key/tuple pair使用键/元组对从字典中提取元组
【发布时间】:2016-10-28 02:08:44
【问题描述】:

我知道我很接近了:

    for k in my_dictionary:
        #print (k, my_dict[k][0],my_dict[k][1])
        for v in my_dict[k]:
            print (v,my_dict[k])

结果:

tuple00('tuple00','tuple01')
tuple01('tuple00','tuple01')
tuple10('tuple10','tuple11')
tuple11('tuple10','tuple11')

注释行会给我一个更好的结果

key0 tuple00 tuple01
key1 tuple00 tuple01

但我必须通过以下方式解决它们:

my_dict[k][0],my_dict[k][1]

这是丑陋的。正在做:

    for k in my_dict:
        for i,m in k:
            print (i,m,k)

给出错误:

    for i,m in k:
ValueError: need more than 1 value to unpack

我知道列表理解可能是我所追求的,但我什至无法开始掌握它。

我会通过循环(如上)或字典/列表理解来接受答案...

我真正想要的是能够选择一个 Key 值并将元组用作引用对:im

【问题讨论】:

  • 你想要的大概是:for key, value in my_dict.iteritems()
  • iteritems 不可用:AttributeError: 'dict' object has no attribute 'iteritems' 出现错误
  • 在 python 3 中只需使用my_dict.items()

标签: python python-3.x tuples list-comprehension dictionary-comprehension


【解决方案1】:

你可以使用.items解包:

 d = {"key":("v1","v2")}

for k, (v1, v2) in d.items():
    print(k, v1, v2)

哪个会打印:

('key', 'v1', 'v2')

使用(v1, v2) 解压缩每个tuple/value

【讨论】:

  • 你知道,我确定我试过这个。但这已经击中了头! :)
  • 包裹在() 中是关键,如果没有它,您将尝试解开三个元素,这会给您旧的need more than 2 values to unpack
  • 再次感谢,这让我难过了好几个小时……现在我可以去睡觉了 :)
  • 别担心,我知道那种感觉;)
【解决方案2】:

你可以这样做:

d = {"key":("v1","v2")}

for key in d:
    print((key,) + d[key])

解压到:

('key', 'v1', 'v2')

【讨论】:

    【解决方案3】:

    你可以这样做:

        for key, value in dictd.iteritems():
            print key, value[0], value[1]
    

    【讨论】:

    • 这是我想要摆脱的索引的丑陋(更多是为了可读性和我的强迫症):)
    • 我也确实收到了AttributeError: 'dict' object has no attribute 'iteritems'的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多