使用基于用户输入的键创建词典

时间:2018-04-01 14:29:35

标签: python dictionary

Cow_id_list = []

Herd_Size = int(input("Enter the size of the herd."))

for x in range(Herd_Size):
    Cow_id = int("Enter a unique 3 digit ID tag for cow",x+1)
    Cow_id_list.append(Cow_id)

print("Initiating yield entry...")

用户输入一个整数(n),它将存储在变量Herd_Size中。如何使用相同(n)个键和我们选择的名称创建字典? 键值名称为ID标记

3 个答案:

答案 0 :(得分:2)

这是一种方式。

Cow_id_list = []
Yield_list = []

Herd_Size = int(input("Enter the size of the herd."))

for x in range(Herd_Size):
    Cow_id = int(input("Enter a unique 3 digit ID tag for cow"))
    Yield = int(input("Enter yield for {0}".format(Cow_id)))
    Cow_id_list.append(Cow_id)
    Yield_list.append(Yield)

d = dict(zip(Cow_id_list, Yield_list))

<强>解释

  • 请求Cow_id的整数输入,方法与Herd_Size相同。
  • Yield执行相同操作。创建一个Yield_list,如Cow_id_list
  • 通过dict(zip(ids, yields))在最后创建字典。 zip用于通过索引同时迭代2个列表。
  • 应用dict将根据结果值对创建字典。

为了进一步改善你的逻辑,我建议你考虑添加一些控件;例如,确保id实际上由3位数组成。

答案 1 :(得分:2)

jpp的方式可能更好,因为你可以同时获得收益和ID。但是,如果你想保留你的结构,你可以这样做:

Cow_id_list = []

Herd_Size = int(input("Enter the size of the herd."))

for x in range(Herd_Size):
    Cow_id = int(input("Enter a unique 3 digit ID tag for cow"))
    Cow_id_list.append(Cow_id)

print("Initiating yield entry...")

d = {}
for i in Cow_id_list:
    y = float(input("Enter yielf for cow {}: ".format(i)))
    d[i] = y

这里发生的是你将d作为空字典启动,然后遍历你的牛ID,逐个获得产量,然后为每头奶牛添加一个密钥,相应的产量为字典d的值。

答案 2 :(得分:0)

不确定为什么需要创建具有特定数量键的字典。您可以询问用户有关ID和产量的输入,并将其放入字典中。

如果你有10头奶牛,你就不会有15个ID和产量。

def add_cow_info():
    add_info = str(input("input cow id and yield?: (y/n)")
    if add_info == "y":
        return True
    elif add_info == "n":
        return False


def main():
    cow_yield = {}
    input_cow = True
    while input_cow():
        ID = str(input("Enter ID: ")) #if the ID is 001, or 010, the result
                                      # will be 1, 10, respectively. 
                                      #Generally keys should be strings anyways.
        _yield = int(input("Enter yield: "))
        cow_yield[ID] = _yield

    return cow_yield